Bonjour à tous,
Pour un projet VBA et l'utilisation d'un userform, j'utilise la fonction "AdvancedFilter" dans une classe Module, voici un extrait du programme :
Avec ce programme, je souhaite filtrer ma base de données (Feuil4) avec un numéro de série particulier en guise de critère et copier le résultat du filtre dans la "Feuil2".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub filtreAvance1() 'Déclaration des variables Dim rgDonnees As Range Dim rgCritere As Range Dim rgDestination As Range 'Affectation des variables Set rgDonnees = Feuil4.Range("A1").CurrentRegion 'Feuil4 est un tableau correspondant à ma "base de données" Set rgCritere = Feuil3.Range("I1").CurrentRegion 'Feuil3 est ma feuille "Liste" où sont définis entre autre les tableaux de critère et listes pour combobox de l'userform Set rgDestination = Feuil2.Range("A1") 'Suppression l'ancien filtre Feuil2.Cells.ClearContents 'Exécute l'outil FiltreAvancee rgDonnees.AdvancedFilter xlFilterCopy, rgCritere, rgDestination End Sub
rgCritère est donc un tableau dont l'en-tête est "Numéro de série" et dont l'unique ligne correspond au numéro de série cherché (type String).
Dans l'utilisation de mon userform, voici l'extrait du code qui appelle cette fonction de filtre :
Cela fonctionne correctement mais pour simplifier mon fichier excel, j'aimerai supprimer la feuille "Liste" et je cherche un moyen de me passer de la première ligne du 2ème code (Feuil3.Range("I2").Value = txtSN.Value).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Feuil3.Range("I2").Value = txtSN.Value 'On copie le SN à la cellule I2 de la feuille "Liste" Call filtreAvance1
Est-ce possible de définir "rgCritere" sans sélectionner une plage de cellules ? Dans l'idéal je souhaiterai avoir :
rgCritere = {"Numéro de série"; numSerie} où numSerie serait une variable publique dont j'affecterai la valeur de "txtSN.Value". Cela m'éviterai de "copier" la valeur dans la feuille Liste puis de lire cette valeur dans la fonction de filtre.
Je débute sur VBA, merci pour vos retours,
En espérant que vous ayiez compris ma demande
Bonne journée![]()
Partager