Tester le résultat du filtrage d'un tableau excel
Bonjour à tous,
J'ai écrit une code (qui fonctionne je précise !), pour alimenter une ComboBox depuis un tableau filtré. Seul problème, c'est quand, après avoir été filtré, le tableau ne contient plus qu'une seule ligne... En effet, à ce moment, le reçois le message d'erreur suivant:
" Erreur d'exécution 381 : Impossible de définir la propriété List .Index de table de propriétés non valide."
Sur un autre post, on m'a suggéré de tester le résultat de filtration... donc de compter le nombre de ligne résultant du filtrage ...
Malheureusement (il y a toujours un malheureusement), je ne sais pas comment compter le nombre de ligne "visible", résultant d'un tri/filtration :(
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction.
Dim Domaine As String, Niveau As String
Domaine = ComboBoxDomaineDeCompetence.Text 'Définition des critères de tri
Niveau = ComboBoxNiveau.Text
With Sheets("Critères").ListObjects("TableauCriteres")
.Range.AutoFilter Field:=2, Criteria1:=Domaine 'Trie TableauCriteres selon les paramètres envoyés en argument
.Range.AutoFilter Field:=3, Criteria1:=Niveau
End With
'####### Remplissage ComboBox avec les données triées ####
Me.ComboBoxCriteresAlimentes.List = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage
Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=3
End Sub |
Les deux critères de tri sont défini par l'utilisateur via deux autres ComboBox. Le tableau duquel est issu le résultat du tri/filtre est "TableauCriteres" Sur la feuille "Critères".
Je vous remercie d'avance pour votre aide ! :)
Alimenter une ComboBox avec un tableau filtré
Re,
Merci pour ta réponse (encore une fois). Ça a marché tip-top ! :) Enfin presque, mais ça m'a quand même aidé à solutionner mon problème grâce à ça. Pour si d'autres gens ont le problèmes un jour. Voici le code complet qui fonctionne pour si d'autres gens en ont besoin un jour:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction.
Dim Domaine As String, Niveau As String
Domaine = ComboBoxDomaineDeCompetence.Text 'Définition des critères de tri
Niveau = ComboBoxNiveau.Text
With Sheets("Critères").ListObjects("TableauCriteres")
.Range.AutoFilter Field:=2, Criteria1:=Domaine 'Trie TableauCriteres selon les paramètres envoyés en argument
.Range.AutoFilter Field:=3, Criteria1:=Niveau
End With
' adapter le nombre, faut voir si le(s) titre(s) sont retournés même quand il n'y a aucune ligne de valeur
If Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Rows.Count = 0 Then
MsgBox ("Aucun résultat")
Exit Sub
End If
If Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Rows.Count = 1 Then
Me.ComboBoxCriteresAlimentes.AddItem Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
Exit Sub
End If
'####### Remplissage ComboBox avec les données triées ####
Me.ComboBoxCriteresAlimentes.List = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage
Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=3
End Sub |
Bonne journée à toi :)