En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Filtre dynamique Macros-commandes VBA/Exercices/Filtre dynamique », n'a pu être restituée correctement ci-dessus.
Le but ici est de créer un filtre dynamique avec 1 boite de message InputBox.
Début de l'exemple
Exemple
Enoncé:
Créer un classeur EXCEL supportant les macros (saisie des heures.xlsm par exemple)
Créer 4 colonnes (Chef, Trimestre, Employé, Nombre d'heures travaillées)
Remplir 15 lignes de tableau de type ("UnNomdeChef","Trimestre 1", "UnNom", "10") avec seulement 3 noms de chefs différents
Créer une nouvelle macro selectionnerChef
Saisir la question adressée à l’utilisateur via une boite de dialogue : "Saisir votre nom de chef : "
Récupérer la réponse de l’utilisateur dans une variable nommée Chef
Appliquer un filtre sur le tableau de la feuille active qui n'affiche que les lignes correspondant à la variable Chef saisie
Filtre dynamique de tableur 1
Fin de l'exemple
Solution
Créer sous EXCEL le fichier saisie des heures.xlsm, puis :
Créer la feuille Présence, puis :
Renseigner les colonnes et lignes comme demandé, puis :
Appliquer la commande Filtre au tableau saisi, puis :
Aller sous l'onglet développeur, créer une macro nommée selectionnerChef, puis :
Définissez votre boite de saisie : Chef = InputBox("Saisir un Chef existant", "Filtrage par Chef")
Positionnez vous sur la feuille "Présence" : Sheets("Présence").Select
Appliquer au filtre le contenu saisi dans Chef : ActiveSheet.Range("$A$2:$D$16").AutoFilter Field:=1, Criteria1:=Array(Chef), Operator:=xlFilterValues
SubselectionnerChef()'' selectionnerChef Macro'' saisir un ChefChef=InputBox("Saisir un Chef existant","Filtrage par Chef")' sélectionner la feuille de travailSheets("Présence").Select' appliquer un filtre par rapport au CPL saisiActiveSheet.Range("$A$2:$D$16").AutoFilterField:=1,Criteria1:=Array(Chef),Operator:=xlFilterValuesEndSub
Filtre dynamique de tableur 2
Remarque
Vous voici maintenant en possession d'un applicateur de filtres dont vous pouvez décliner les fonctions à l'infini avec tous types de données filtrables