OVH Cloud OVH Cloud

filtre élaboré avec "exact" en vba

5 réponses
Avatar
...Patrick
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1 et
AD2 mais mon problème est le suivant: si dans la table de données il y a les
mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée , hors
je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick

5 réponses

Avatar
...Patrick
oupsss
partie de mon code pour y voir clair peut etre

Myarray = Array("A EXPEDIER", "A RENTRER EN MAGASIN", "A REPARER" _
, "A VISITER PAR AGENT", "SOUS-TRAITANCE", "TOLES
LITIGIEUSES", "TOLES PERDUES", _
"TOLES URGENTES")
' faire un filtre pour chacun des groupes de l'array
' et placer le tout ds un nouvel onglet par groupe
'
For lCount = 0 To UBound(Myarray)
Départ.Range("AD2").Value = Myarray(lCount)
strName = Myarray(lCount) 'Départ.Range("AD" & lCount)

'Create a sheet named the same as the Départment. _
If sheet already exists halt macro

On Error Resume Next
Sheets.Add().Name = strName
ActiveWindow.Zoom = 70
If ActiveSheet.Name <> strName Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "Cette feuille existe déjà. Macro arrêtée " & Chr(13) & strName,
vbCritical, "P.Mac Kay"
On Error GoTo 0
Exit Sub
End If
' =================================================== ' filtrer avec option unique ici et c'est ici le probleme !!!!
rdata.AdvancedFilter xlFilterCopy, Départ.Range("AD1:AD2"), _
Sheets(strName).Range("A1")
' ici il me donne "A EXPEDIER" et "A EXPEDIER sous traitance" dans le meme
onglet
'========================================================== Merci



"...Patrick" a écrit dans le message de
news:
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1 et
AD2 mais mon problème est le suivant: si dans la table de données il y a
les

mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée ,
hors

je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick





Avatar
michdenis
Bonjour Patrick

si j'ai bien compris, tu veux obtenir les enregistrements dont le champ contient au moins le mot "ceci" ou seulement le
mot ceci


Pour obtenir seulement les enregistrements qui contient seulement le mot "ceci"

Le critère : G1 = NomDuChamp
G2 = ="Îci"
Tu dois inclures les 2 signes "=" dans la cellule


Pour obternir les enregistrements qui contient du texte suivi du mot "ceci" comme dans cette exemple : "et pour ceci"
Le critère : G1 = NomDuChamp
G2 = ="* ceci"
Il y a un espace entre l'étoile et le mot ceci


Pour obtenir les enregistrements qui contient du texte après le mot "ceci" comme dans l'exemple "ceci est du déjà vu"
Le critère : G1 = NomDuChamp
G2 = ="*ceci *"
Il y a un espace entre l'étoile et le mot ceci


P.S. Attention à la casse et l'orthographe du champ... dans la zone de critère...


Salutations!





"...Patrick" a écrit dans le message de
news:
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1 et
AD2 mais mon problème est le suivant: si dans la table de données il y a les
mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée , hors
je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick
Avatar
michdenis
Bonjour Patrick

Essaie ceci :

'------------------------------
Sub FiltreÉlaboré()

Dim Arr(), A As Variant

Arr = Array("ceci", "A RENTRER EN MAGASIN", _
"A REPARER", "A VISITER PAR AGENT", _
"SOUS-TRAITANCE", "TOLES LITIGIEUSES", _
"TOLES PERDUES", "TOLES URGENTES")

Application.ScreenUpdating = False
For Each A In Arr
With Worksheets("Feuil1")
.Activate
'Renseigner la zone de critère
'Supposons que ce soit H1:H2
'AdresseDuTitreDuChamp : Exemple Range("A1")
.Range("H1") = .Range("A1")
'premier élément de l'array
.Range("H2").Formula = "=""=" & A & """"
'Application du filtre en supposant que tu
'n'as pas de ligne vide dans ton tableau
With .Range("A1").CurrentRegion
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("H1:H2")
'Ajoute une nouvelle feuille
Worksheets.Add after:=Sheets(Sheets.Count)
'copie le résultat du filtre vers la
'nouvelle feuille
.Copy ActiveSheet.Range("A1")
End With
'Affiche toutes les données après
'le filtre
.Activate
.ShowAllData
End With
Next

End Sub
'------------------------------


Salutations!


"...Patrick" a écrit dans le message de
news:%23s$
oupsss
partie de mon code pour y voir clair peut etre

Myarray = Array("A EXPEDIER", "A RENTRER EN MAGASIN", "A REPARER" _
, "A VISITER PAR AGENT", "SOUS-TRAITANCE", "TOLES
LITIGIEUSES", "TOLES PERDUES", _
"TOLES URGENTES")
' faire un filtre pour chacun des groupes de l'array
' et placer le tout ds un nouvel onglet par groupe
'
For lCount = 0 To UBound(Myarray)
Départ.Range("AD2").Value = Myarray(lCount)
strName = Myarray(lCount) 'Départ.Range("AD" & lCount)

'Create a sheet named the same as the Départment. _
If sheet already exists halt macro

On Error Resume Next
Sheets.Add().Name = strName
ActiveWindow.Zoom = 70
If ActiveSheet.Name <> strName Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "Cette feuille existe déjà. Macro arrêtée " & Chr(13) & strName,
vbCritical, "P.Mac Kay"
On Error GoTo 0
Exit Sub
End If
' =================================================== ' filtrer avec option unique ici et c'est ici le probleme !!!!
rdata.AdvancedFilter xlFilterCopy, Départ.Range("AD1:AD2"), _
Sheets(strName).Range("A1")
' ici il me donne "A EXPEDIER" et "A EXPEDIER sous traitance" dans le meme
onglet
'========================================================== Merci



"...Patrick" a écrit dans le message de
news:
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1 et
AD2 mais mon problème est le suivant: si dans la table de données il y a
les

mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée ,
hors

je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick





Avatar
...Patrick
Ok, j'essaie et je te fais signe ensuite !!!
Merci déjà à toi

...Patrick


"michdenis" a écrit dans le message de
news:%23Fr$
Bonjour Patrick

Essaie ceci :

'------------------------------
Sub FiltreÉlaboré()

Dim Arr(), A As Variant

Arr = Array("ceci", "A RENTRER EN MAGASIN", _
"A REPARER", "A VISITER PAR AGENT", _
"SOUS-TRAITANCE", "TOLES LITIGIEUSES", _
"TOLES PERDUES", "TOLES URGENTES")

Application.ScreenUpdating = False
For Each A In Arr
With Worksheets("Feuil1")
.Activate
'Renseigner la zone de critère
'Supposons que ce soit H1:H2
'AdresseDuTitreDuChamp : Exemple Range("A1")
.Range("H1") = .Range("A1")
'premier élément de l'array
.Range("H2").Formula = "=""=" & A & """"
'Application du filtre en supposant que tu
'n'as pas de ligne vide dans ton tableau
With .Range("A1").CurrentRegion
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("H1:H2")
'Ajoute une nouvelle feuille
Worksheets.Add after:=Sheets(Sheets.Count)
'copie le résultat du filtre vers la
'nouvelle feuille
.Copy ActiveSheet.Range("A1")
End With
'Affiche toutes les données après
'le filtre
.Activate
.ShowAllData
End With
Next

End Sub
'------------------------------


Salutations!


"...Patrick" a écrit dans le message
de

news:%23s$
oupsss
partie de mon code pour y voir clair peut etre

Myarray = Array("A EXPEDIER", "A RENTRER EN MAGASIN", "A REPARER" _
, "A VISITER PAR AGENT", "SOUS-TRAITANCE", "TOLES
LITIGIEUSES", "TOLES PERDUES", _
"TOLES URGENTES")
' faire un filtre pour chacun des groupes de l'array
' et placer le tout ds un nouvel onglet par groupe
'
For lCount = 0 To UBound(Myarray)
Départ.Range("AD2").Value = Myarray(lCount)
strName = Myarray(lCount) 'Départ.Range("AD" & lCount)

'Create a sheet named the same as the Départment. _
If sheet already exists halt macro

On Error Resume Next
Sheets.Add().Name = strName
ActiveWindow.Zoom = 70
If ActiveSheet.Name <> strName Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "Cette feuille existe déjà. Macro arrêtée " & Chr(13) &
strName,

vbCritical, "P.Mac Kay"
On Error GoTo 0
Exit Sub
End If
' =================================================== > ' filtrer avec option unique ici et c'est ici le probleme !!!!
rdata.AdvancedFilter xlFilterCopy, Départ.Range("AD1:AD2"), _
Sheets(strName).Range("A1")
' ici il me donne "A EXPEDIER" et "A EXPEDIER sous traitance" dans le meme
onglet
'========================================================== > Merci



"...Patrick" a écrit dans le message
de

news:
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1
et


AD2 mais mon problème est le suivant: si dans la table de données il y a
les

mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée ,
hors

je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick










Avatar
...Patrick
Bonjour Denis,

Je me suis inspiré de ta méthode et ça fonctionne avec les données
exactes...
J'ai encore appris qq chose moi !! :-)))

Merci et à bientot

...Patrick

"michdenis" a écrit dans le message de
news:%23Fr$
Bonjour Patrick

Essaie ceci :

'------------------------------
Sub FiltreÉlaboré()

Dim Arr(), A As Variant

Arr = Array("ceci", "A RENTRER EN MAGASIN", _
"A REPARER", "A VISITER PAR AGENT", _
"SOUS-TRAITANCE", "TOLES LITIGIEUSES", _
"TOLES PERDUES", "TOLES URGENTES")

Application.ScreenUpdating = False
For Each A In Arr
With Worksheets("Feuil1")
.Activate
'Renseigner la zone de critère
'Supposons que ce soit H1:H2
'AdresseDuTitreDuChamp : Exemple Range("A1")
.Range("H1") = .Range("A1")
'premier élément de l'array
.Range("H2").Formula = "=""=" & A & """"
'Application du filtre en supposant que tu
'n'as pas de ligne vide dans ton tableau
With .Range("A1").CurrentRegion
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("H1:H2")
'Ajoute une nouvelle feuille
Worksheets.Add after:=Sheets(Sheets.Count)
'copie le résultat du filtre vers la
'nouvelle feuille
.Copy ActiveSheet.Range("A1")
End With
'Affiche toutes les données après
'le filtre
.Activate
.ShowAllData
End With
Next

End Sub
'------------------------------


Salutations!


"...Patrick" a écrit dans le message
de

news:%23s$
oupsss
partie de mon code pour y voir clair peut etre

Myarray = Array("A EXPEDIER", "A RENTRER EN MAGASIN", "A REPARER" _
, "A VISITER PAR AGENT", "SOUS-TRAITANCE", "TOLES
LITIGIEUSES", "TOLES PERDUES", _
"TOLES URGENTES")
' faire un filtre pour chacun des groupes de l'array
' et placer le tout ds un nouvel onglet par groupe
'
For lCount = 0 To UBound(Myarray)
Départ.Range("AD2").Value = Myarray(lCount)
strName = Myarray(lCount) 'Départ.Range("AD" & lCount)

'Create a sheet named the same as the Départment. _
If sheet already exists halt macro

On Error Resume Next
Sheets.Add().Name = strName
ActiveWindow.Zoom = 70
If ActiveSheet.Name <> strName Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "Cette feuille existe déjà. Macro arrêtée " & Chr(13) &
strName,

vbCritical, "P.Mac Kay"
On Error GoTo 0
Exit Sub
End If
' =================================================== > ' filtrer avec option unique ici et c'est ici le probleme !!!!
rdata.AdvancedFilter xlFilterCopy, Départ.Range("AD1:AD2"), _
Sheets(strName).Range("A1")
' ici il me donne "A EXPEDIER" et "A EXPEDIER sous traitance" dans le meme
onglet
'========================================================== > Merci



"...Patrick" a écrit dans le message
de

news:
Bonjour,

je fais en vba un filtre élaboré sur base des critères en cellules AD1
et


AD2 mais mon problème est le suivant: si dans la table de données il y a
les

mots "ceci" et "ceci aussi" il me donne les 2 dans la réponse filtrée ,
hors

je ne dois avoir que les enregistrements qui répondent exactement au mot
"ceci" ...
Comment faire ?
J'ai bien recherché sur google mais rien qui me convienne.
Merci

...Patrick