Filtre avec caractère joker vba

4 réponses
Avatar
Steph
Bonjour,

Je cherche =E0 faire un filtre sur des triplets, mais parfois je n'ai
que 1 ou 2 valeurs du triplet.
Mon triplet est compos=E9:
- d'une lettre de A =E0 N
- d'un nombre entre 1 et 99
- de 2 lettres: UP ou DW

Donc mes triplets peuvent =EAtre A_1_UP; D_16_DW ...

L'utilisateur remplit des comobobox pour faire sa requ=EAte sur 1, 2 ou
les 3 valeurs du triplets.

Si une des valeurs est vide, il faudrait que j'utilise des caract=E8res
jokers, genre * ou ? mais je n'y arrive pas.

J'ai fait =E7a:

If ComboBox1 <> "" Then motif =3D motif & ComboBox1.Value Else motif =3D
"?"
If ComboBox2 <> "" Then motif =3D motif & "_" & ComboBox2.Value Else
motif =3D motif & "_" & "??"
If ComboBox3 <> "" Then motif =3D motif & "_" & ComboBox3.Value Else
motif =3D motif & "_" & "??"

Rows("2:2").Select
Selection.AutoFilter
ActiveSheet.Range(Cells(2, 11), Cells(ligne, 11)).AutoFilter
Field:=3D11, Criteria1:=3D"*" & motif & "*"


Ici, mes ? =E9taient les jokers mais =E7a ne marche pas.

Comment puis-je faire ?

Merci

4 réponses

Avatar
isabelle
bonjour Steph,

Selection.AutoFilter Field:, Criteria1:="=?" & motif & "*", Operator:=xlAnd

je ne sais pas si l'erreur c'est fait lors de ton copier/coller
mais au cas ou, n'oublie pas de laisser un espace avant et après les &

--
isabelle



Le 2011-11-22 11:20, Steph a écrit :
Bonjour,

Je cherche à faire un filtre sur des triplets, mais parfois je n'ai
que 1 ou 2 valeurs du triplet.
Mon triplet est composé:
- d'une lettre de A à N
- d'un nombre entre 1 et 99
- de 2 lettres: UP ou DW

Donc mes triplets peuvent être A_1_UP; D_16_DW ...

L'utilisateur remplit des comobobox pour faire sa requête sur 1, 2 ou
les 3 valeurs du triplets.

Si une des valeurs est vide, il faudrait que j'utilise des caractères
jokers, genre * ou ? mais je n'y arrive pas.

J'ai fait ça:

If ComboBox1<> "" Then motif = motif& ComboBox1.Value Else motif > "?"
If ComboBox2<> "" Then motif = motif& "_"& ComboBox2.Value Else
motif = motif& "_"& "??"
If ComboBox3<> "" Then motif = motif& "_"& ComboBox3.Value Else
motif = motif& "_"& "??"

Rows("2:2").Select
Selection.AutoFilter
ActiveSheet.Range(Cells(2, 11), Cells(ligne, 11)).AutoFilter
Field:, Criteria1:="*"& motif& "*"


Ici, mes ? étaient les jokers mais ça ne marche pas.

Comment puis-je faire ?

Merci
Avatar
isabelle
ou plus simplement,


a = ComboBox1
b = ComboBox2
c = ComboBox3

Selection.AutoFilter Field:, Criteria1:="=*" & a & "*" & b & "*" & c & "*", Operator:=xlAnd

--
isabelle
Avatar
Steph
On 23 nov, 01:51, isabelle wrote:
ou plus simplement,

a = ComboBox1
b = ComboBox2
c = ComboBox3

Selection.AutoFilter Field:, Criteria1:="=*" & a & "*" & b & "*" & c & "*", Operator:=xlAnd

--
isabelle



Merci mais ça ne marche pas si a ou b ou c est vide.
Si a et b et c sont remplis, ça marche, mais je cherchais une solution
si l'une de mes variables est vide.
Avatar
isabelle
a, b ou c ne peuvent pas être vide (empty), mais peuvent être = à une chaine vide ("")

--
isabelle


Le 2011-11-23 04:53, Steph a écrit :

Merci mais ça ne marche pas si a ou b ou c est vide.
Si a et b et c sont remplis, ça marche, mais je cherchais une solution
si l'une de mes variables est vide.