Problème sur filtre

Bonjour à toutes et à tous,

J'ai créer l'Userform sans problème et j'ai bidouiller un code VBA:

Mais voila j'ai un problème:

Quand je choisis un paramètre dans une liste déroulante de ma userform et que je clique sur le bouton " rechercher ", il me filtre toute ma base de données( toutes les colonnes, mais j'aimerais qu'il me filtre juste la colonne sélectionnée.

Je pense qu'il faut séparer le code sur chaque combobox, mais mes compétences en programmation sont très limitées.

Je joins un fichier excel pour exemple

Merci d'avance.

18exemple.zip (26.74 Ko)

Bonjour

A améliorer

C'est exactement ce que je cherche, je te remercie vraiment du fond du coeur pour toute l'aide que tu m'as apportée.

Tu me sauve la vie, merci et encore bravo !!!

-- 27 Jan 2011, 17:01 --

Je viens juste de m'apercevoir qu'il y a juste la combobox de la taille qui fonctionne mal.

Tu pourrais m'expliquer un peu comment tu as fais pour coder tout ça, merci !

-- 27 Jan 2011, 17:05 --

Je viens de comprendre à l'instant, c'est parce qu'il y a des virgules dans les cellules ou parce que excel croit que c'est un nombre. Est-il possible de remédier à cela. Merci

Bonsoir

remplace la procédure "Private Sub CommandButton1_Click()"existante par celle-ci

Private Sub CommandButton1_Click()
  With Sheets("Bras").Range("A4:E200")
    If ComboBox1.ListIndex > -1 Then .AutoFilter Field:=1, Criteria1:=ComboBox1.Value
    If ComboBox2.ListIndex > -1 Then .AutoFilter Field:=2, Criteria1:=ComboBox2.Value
    If ComboBox3.ListIndex > -1 Then .AutoFilter Field:=3, Criteria1:=Val(Replace(ComboBox3.Value, ",", "."))
    If ComboBox4.ListIndex > -1 Then .AutoFilter Field:=4, Criteria1:=ComboBox4.Value
    If ComboBox5.ListIndex > -1 Then .AutoFilter Field:=5, Criteria1:=ComboBox5.Value
  End With
End Sub

Bonne soirée

Bonjour à toutes et à tous, j'ai une question pour toi Banzaî64:

Si j'ai besoin de rajouter des colonnes (imaginons que j'ai 50 colonnes à filtrer avec 50 combobox dans l'userbox), comment puis-je modifier le code VBA.

J'aimerais également ne pas prendre en compte la 1ère et 3ème colonne. C'est à dire qu'elles ne seront pas présentées dans l'userform (avec des combobox). En espérant que c'est possible...

Et juste pour ne plus poser de questions, pourrais-tu m'expliquer comme tu as fais pour coder tout ça (genre des commentaires à coté des lignes de code), parce que c'est génial que ça fonctionne, mais j'aimerais surtout comprendre et apprendre le VB pour ne plus avoir à t’embêter pour une question bête.

Je te remercie par avance.

Bonjour

Je ne vais te donner que mon avis

50 ComboBox cela fait beaucoup dans un Userform

Pour le tri (bien que je trouve pas le code pratique) inspires toi du code en place

Je pense (n'étant pas trop habitué à l'autofiltre) qu'il y a un autre moyen de filtrer avec plusieurs paramètres

Des habitués pourront t'en dire plus

Pour ne pas tenir compte de la 1ère et de la 3ème colonne mets en remarque les lignes concernées

Pour coder tout ça le mieux c'est de regarder les autres codes, d'essayer de comprendre le pourquoi du comment, de faire des essais de programmation, d'y travailler 15h00 par jour ( )

De fouiller un peu partout

Sur ce site tu trouveras une multitude d'exemples plus ou moins compliqués qui pourraient t'intéresser

Il n'y pas de "questions bêtes" ce ne sont que les réponses qui le sont

ou

Celui qui pose une question risque d'avoir l'air bête 5 minutes. Celui qui n'en pose pas, risque de rester bête toute sa vie

Bonne journée

Ok merci, pourrais tu m'expliquer, ce que ça veut dire : i = 1 to 5 parce que je ne comprends c'est commande et dès que je veux la changer, il me met une erreur.

Merci d'avance.

Bonjour

i=1 To 5 est utilisé pour simplifier le code

Au lieu d'écrire

Me.ComboBox1.ListIndex = -1
Me.ComboBox2.ListIndex = -1
Me.ComboBox3.ListIndex = -1
Me.ComboBox4.ListIndex = -1
Me.ComboBox5.ListIndex = -1

Il est plus simple d'utiliser une boucle et le I remplacera le numéro du Combobox

Exemple

Comme on ne peut pas mettre Me.ComboBox & I .ListIndex = 1

Il faut passer par la collection Controls qui contient tous les contrôles de l'Userform (sauf erreur de ma part)

  For I = 1 To 5
    Me.Controls("ComboBox" & I).ListIndex = -1
  Next I

Donc si tu modifies ces valeurs assures toi que tu as bien les contrôles ayant le nom et le numéro correspondant

Bonne journée

Merci pour l'explication !

Rechercher des sujets similaires à "probleme filtre"