Bonjour tout le monde,
J'ai un petit souci de filtres sur mon code. J'ai créé un userform où je voudrais pouvoir afficher des articles en fonction d'une catégorie sélectionnée (jusque là pas de problème).
Seconde problématique : n'afficher que les articles pour lesquels telle valeur est inférieure à telle autre valeur... Ici non plus, pas de difficulté.
Mon problème vient du fait que malgré le filtre posé, excel ne tient pas compte de celui-ci lors de l'affichage de mes articles (dans une listbox). Par exemple, si je prends 3 catégories d'articles (mécanique, électrique et informatique) et que je sélectionne la première, je n'ai pas de problème. Si je sélectionne la seconde, il va m'afficher les catégories mécanique et électrique et si je sélectionne les 3, il va opérer pour l'ensemble des catégories.
Je mets le bout de code concerné ci dessous :
If Worksheets("Feuil1").AutoFilterMode Then ActiveSheet.AutoFilterMode = False
If ComboBox1.Value = "Mécanique" Then
'Création d'un filtre sur le tableau
Range("A1:K1").Select
'On filtre les valeurs du groupe en fonction de la catégorie sélectionnée
Selection.AutoFilter Field:=1, Criteria1:="Mécanique"
ListBox1.Clear
For variable = 1 To Range("A65536").End(xlUp).Row 'Pour chaque ligne du tableau ou le stock réel est inférieur au stock mini
If Cells(variable, 10) < Cells(variable, 9) Then
ListBox1.AddItem Cells(variable, 3) 'On ajoute l'article concerné à la listbox
End If
Next variable
End If
Ce morceau de code ne concerne que la catégorie mécanique, j'évite de mettre les 2 autres boucles afin d'éviter les répétitions (le code est strictement le même dans les autres boucles).
Si besoin, je pourrai éventuellement créer un fichier excel à titre d'exemple, mais je voudrais déjà savoir si mon filtre est placé au bon endroit. J'ai déjà rencontré ce problème à cause d'une boucle mal placée, mais là, j'avoue que je sèche...
Merci d'avance ! 🙂
Une petite question supplémentaire : à la désactivation de mon code (première ligne), les lignes de cellules de mon tableau restent "filtrées" (lignes de cellules réduites à redimensionner à la main). J'ai essayé d'utiliser "selection autofilter" à la place, mais vba me ressort l'erreur "la methode autofilter de la classe range a échoué"... Si quelqu'un a un moyen quelconque de contourner le problème, je suis preneur ! 😛
J'ai un petit souci de filtres sur mon code. J'ai créé un userform où je voudrais pouvoir afficher des articles en fonction d'une catégorie sélectionnée (jusque là pas de problème).
Seconde problématique : n'afficher que les articles pour lesquels telle valeur est inférieure à telle autre valeur... Ici non plus, pas de difficulté.
Mon problème vient du fait que malgré le filtre posé, excel ne tient pas compte de celui-ci lors de l'affichage de mes articles (dans une listbox). Par exemple, si je prends 3 catégories d'articles (mécanique, électrique et informatique) et que je sélectionne la première, je n'ai pas de problème. Si je sélectionne la seconde, il va m'afficher les catégories mécanique et électrique et si je sélectionne les 3, il va opérer pour l'ensemble des catégories.
Je mets le bout de code concerné ci dessous :
If Worksheets("Feuil1").AutoFilterMode Then ActiveSheet.AutoFilterMode = False
If ComboBox1.Value = "Mécanique" Then
'Création d'un filtre sur le tableau
Range("A1:K1").Select
'On filtre les valeurs du groupe en fonction de la catégorie sélectionnée
Selection.AutoFilter Field:=1, Criteria1:="Mécanique"
ListBox1.Clear
For variable = 1 To Range("A65536").End(xlUp).Row 'Pour chaque ligne du tableau ou le stock réel est inférieur au stock mini
If Cells(variable, 10) < Cells(variable, 9) Then
ListBox1.AddItem Cells(variable, 3) 'On ajoute l'article concerné à la listbox
End If
Next variable
End If
Ce morceau de code ne concerne que la catégorie mécanique, j'évite de mettre les 2 autres boucles afin d'éviter les répétitions (le code est strictement le même dans les autres boucles).
Si besoin, je pourrai éventuellement créer un fichier excel à titre d'exemple, mais je voudrais déjà savoir si mon filtre est placé au bon endroit. J'ai déjà rencontré ce problème à cause d'une boucle mal placée, mais là, j'avoue que je sèche...
Merci d'avance ! 🙂
Une petite question supplémentaire : à la désactivation de mon code (première ligne), les lignes de cellules de mon tableau restent "filtrées" (lignes de cellules réduites à redimensionner à la main). J'ai essayé d'utiliser "selection autofilter" à la place, mais vba me ressort l'erreur "la methode autofilter de la classe range a échoué"... Si quelqu'un a un moyen quelconque de contourner le problème, je suis preneur ! 😛
Dernière édition: