VBA filtre : choix colonne selon 1 critere

Fermé
Celia - 19 juil. 2010 à 18:20
 Célia - 21 juil. 2010 à 12:42
Bonjour,

Je progresse peu à peu sur VBA mais je me heurte à un probleme (peut etre simple?) que je n'arrive décidément pas à réésoudre malgré mes recherches...

Par exemple, imaginons le tableau suivant :

A B C
1 Nom Col1 Col2
2 aa 1 2
3 bb 1
4 cc 2
5 dd

Je souhaiterais par exemple entrer en D1 le critère "1" ou "2" et, si c'est "1" filtrer la colonne B pour voir apparaitre tous les noms correspondants, et de meme si c'est "2" faire ce filtre sur la colonne C.
Par exemple, si en D1 j'entre "2" je voudrais voir apparaitre les lignes 2 ("aa") et 4 ("cc") ; si j'entre "1" je voudrais voir les lignes 2 ("aa") et 3 ("bb").

Je suis absolument bloquée... J'essaie avec :

Sub Tri()
With ActiveSheet
choix = .Range ("D1")
End With
ActiveSheet. Range("A1:C5").AutoFilter Field:=2, Operator:=xlOr, Field:=3, Criteria1:=choix


Mais cela me fait le tri uniquement sur la colonne B et non selon ce que l'on entre en D1.
Je pense que la macro que j'utilise n'est pas très adaptée mais je ne sais pas quoi utiliser d'autre... Si quelqu'un a une idée ??

J'espère que j'ai pas été trop confuse... Merci à ceux qui essaieront de sauver mes derniers cheveux !

Célia


A voir également:

2 réponses

On ne visualise pas l'exemple du tableau, je le remets:
___A____B____C__
1__nom__col1__col2
2__aa____1____2
3__bb____1_____
4__cc_________2
5__dd__________
0
Je suis désolée si mon premier message n'était pas clair...

J'ai progressé et réussi à créer la macro que je voulais (sur un tableau plus complexe), mais je me heurte à un nouveau problème...

Tout d'abord, voilà la macro :
Private Sub WorkSheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H1")) Is Nothing Then
Sheets(2).Range("$A$2:$J$30").AutoFilter
Select Case Target.Value
Case "A"
Call Recherche1
Case "B"
Call Recherche2
Case Else
Exit Sub
End Select
End If
End Sub

Sub Recherche1()
Sheets(2).Range("$A$2:$J$30").AutoFilter Field:=8, Criteria1:="x"
End Sub

Sub Recherche2()
Sheets(2).Range("$A$2:$J$30").AutoFilter Field:=9, Criteria1:="x"
End Sub



Mon problème est que "WorkSheet_Change" concerne la feuille sur laquelle on exécute la macro, or je voudrais que le "A" ou le "B" soit saisi dans une case de la première feuille... Je ne vois pas comment faire... Quelqu'un a-t-il une idée?

Merci beaucoup...
0