Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA] filtre avec plusieurs choix

guiguigui69008

XLDnaute Nouveau
Bonjour, Débutant en programmation, et n'ayant pas envie d'en faire mon métier, je créé des macro a partir de long fichiers excel, afin de créer des documents de synthèse exploitable par mes collègues.

Explication:

J'ai une liste de pièces dans mon stock, chaque pièce a une référence.
dans cette liste, je souhaite extraire une liste de certaine pièce seulement. Ces pièces sont définit.
Mes colonnes sont triées.
Mon objectif est donc de créer un formulaire, ou je coche les pièces dont je veux voir apparaitre la synthèse des stock. jusque la, pas de problème.

ma méthode était la suivante : a chaque nom de pièce dans le formulaire correspond plusieurs variable auquel j'ai attribué mes références de pièces.
Donc selon le nombre de case que je coche, je veux filtré mon tableau pour ne voir apparaitre que les pièce qui m'intéresse ( je coche la case, qui active des variable, ces variables sont des numéro qui correspondent a mes référence de pièce, ensuite je filtre avec ces références dans ma colonne référence)
Problème: il ne me les affiches pas sous forme de liste, il les affiche un par un mais les efface.

Voila mon code pour la check box dans laquelle je fais mes choix.
j'aurais voulu mettre un fichier exemple, mais la confidentialité dans mon entreprise m'en empeche...

Voila, je sais pas si vous avez compris. j'espère que oui, parce que ca fait 2jours complet que je suis dessus et que ca marche pas.

Si vous avez des questions n'hésitez pas.

Ou si vous avez d'autre idée pour faire ce que je souhaite faire...
 

guiguigui69008

XLDnaute Nouveau
Re : [VBA] filtre avec plusieurs choix

Je ne peux pas envoyer le fichier original par soucis de confidentialité, mais j'en ferais un pour illustrer mon soucis.
Je suis en déplacement aujourd'hui, je le ferais jeudi, merci
 

guiguigui69008

XLDnaute Nouveau
Re : [VBA] filtre avec plusieurs choix

Afin que vous puissiez mieux comprendre mon problème, et que je puisse enfin me sortir de cette galère, je vous ai fait un fichier type qui reprend mon problème en pièce jointes, le code n'est pas tout a fait le même mais c'est la même chose en plus simple.

Comme vous pourrez le voir, quand on clique sur le bouton "chercher les stock" un formulaire apparait, je voudrais que lorsque je coche une case, seule les pièces qui appartiennent au groupe apparaissent, pareil si je choisis plusieurs groupe.

Merci de votre aide
 

Pièces jointes

  • Essai tri macro.xlsm
    40.4 KB · Affichages: 88
  • Essai tri macro.xlsm
    40.4 KB · Affichages: 82
  • Essai tri macro.xlsm
    40.4 KB · Affichages: 93

youky(BJ)

XLDnaute Barbatruc
Re : [VBA] filtre avec plusieurs choix

Bonjour,
pas facile de faire un filtre avec plus de 2 critères.
Ici sur ton fichier en retour j'utilise la colonne K pour mettre des 1 si besoin et filtre sur cette colonne.
Peut être cette colonne est déja utilisée donc dans ce cas il faudra rectifier en macro pour écrire et filtrer dans une colonne qui ne sert pas.
Bon test
Plus besoin des macros en checkbox une seule pour le bouton...que voici
Code:
Sub CommandButtonok_Click()
[K:K].ClearContents 'on efface col K
Range("$A$5:$P$1043").AutoFilter  ' filtre à 0
Dim t() As Integer
Dim k%, i%, b%
If CheckBox1.Value = True Then
ReDim t(2)
i = i + 1: t(i) = 22: i = i + 1: t(i) = 47
End If
If CheckBox2.Value = True Then
ReDim Preserve t(i + 3)
i = i + 1: t(i) = 143: i = i + 1: t(i) = 163: i = i + 1: t(i) = 301
End If
If CheckBox3.Value = True Then
ReDim Preserve t(i + 2)
i = i + 1: t(i) = 401: i = i + 1: t(i) = 402
End If
If CheckBox4.Value = True Then
ReDim Preserve t(i + 3)
i = i + 1: t(i) = 407: i = i + 1: t(i) = 426: i = i + 1: t(i) = 462
End If
If CheckBox5.Value = True Then
ReDim Preserve t(i + 2)
i = i + 1: t(i) = 223: i = i + 1: t(i) = 314
End If
'cells(ligne,colonne) "11" est col K
For k = 5 To Range("A" & Rows.Count).End(3).Row
    For b = 1 To i
    If Cells(k, 1) = t(b) Then Cells(k, 11) = 1: Exit For 'on met 1 en col K
    Next
Next
'field:=11 est col K
Range("$A$5:$P$1043").AutoFilter Field:=11, Criteria1:="=1"
    Unload UserForm1
    
End Sub
Bruno
 

Pièces jointes

  • Essai tri macro.xlsm
    37.1 KB · Affichages: 78
  • Essai tri macro.xlsm
    37.1 KB · Affichages: 89
  • Essai tri macro.xlsm
    37.1 KB · Affichages: 90

guiguigui69008

XLDnaute Nouveau
Re : [VBA] filtre avec plusieurs choix

Merci de ton code youky, je l'ai essayé il marche très bien, mais on m'a donné une autre solution :

La méthode "Array" que j'utilisais, ne marche qu'avec des chaines de caractères....

C'est pour cela que dans mon cas ça ne marchait pas...
J'ai donc changé toutes mes variables en chaines de caractère, mis des guillemets quand je leur attribue une valeur, un opérateur a la fin de la méthode "Array" et le tour était joué!!!!!

Voila mon programme si tu veux regarder!

Merci encore!!!
 

Pièces jointes

  • Essai tri macro.xlsm
    40.1 KB · Affichages: 87
  • Essai tri macro.xlsm
    40.1 KB · Affichages: 98
  • Essai tri macro.xlsm
    40.1 KB · Affichages: 98
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…