Macros-commandes VBA/Exercices/Filtre dynamique
Applicateur de filtre
modifierLe but ici est de créer un filtre dynamique avec 1 boite de message InputBox.
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
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
Sub selectionnerChef()
'
' selectionnerChef Macro
'
' saisir un Chef
Chef = InputBox("Saisir un Chef existant", "Filtrage par Chef")
' sélectionner la feuille de travail
Sheets("Présence").Select
' appliquer un filtre par rapport au CPL saisi
ActiveSheet.Range("$A$2:$D$16").AutoFilter Field:=1, Criteria1:=Array(Chef), Operator:=xlFilterValues
End Sub