Advance filter VBA avec conditions

Bonjour à tous,

Je cherche à extraire les numéros de facture payé par n'importe quelle méthode de paiement SAUF "En compte facturation" via VBA.
Ces numéros de facture doivent être copié et exporté vers une autre feuille. Aussi, certain numéro peuvent apparaitre plusieurs fois. Hors, je souhaite me débarrasser des doublons.
J'ai écrit un code advance filter déjà (voir plus bas), mais je ne sais pas comment insérer ma condition.

Pouvez vous m'aider s'il vous plaît?

Bien cordialement,
Numéro de factureMéthode de Paiement
80240Virement
80241En compte facturation
80242En compte facturation
80243En compte facturation
80244Virement
80245Espèce
80246Chèque

Sub FiltrerNumérofacture()

Sheets("ExportPeséeWork").Range("O2:O2000") _
.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("DétailC.A") _
.Range("F1:F3"), _
CopyToRange:=Sheets("DétailC.A") _
.Range("B8:B16"), _
Unique:=True
End Sub

Bonjour,

Un filtre avancé fait apparaître les données filtrées sur la même feuilles que les données sources donc dans votre cas, avec sur la feuille DétailC.A, en F1 "Méthode de Paiement" puis en F2 à F4 vos critères (donc Virement, Espèce et Chèque) alors :

Sub FiltrerNumérofacture()
With Worksheets("ExportPeséeWork")
    .[N1:O2000].AdvancedFilter xlFilterCopy, Worksheets("DétailC.A").[F1:F4], .[A1], True
End With
End Sub

Bien sûr la première cellule du résultat (.[A1]) est a adapter.

Cdlt,

Bonjour, et merci pour votre réponse.

Malheureusement le code supprimait ma plage me donné et ne me copiait pas les données ailleurs. J'ai aussi fait une erreur dans mon énoncé de base.

J'ai donc refait mon code et il marche, mais il manque un critère basé sur le nom des clients :

Sub FiltrerBEHorsEnCompteFacturation()
Sheets("SuiviBENKT").Range("B6:F2000") _
.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("List fact") _
.Range("E1:E5"), _
CopyToRange:=Sheets("List Fact") _
.Range("C9:C41"), _
Unique:=True

End Sub

J'ai des clients que je nommerais "client X" et qui payent avec le moyen de paiement "Espèces". Il sont toujours dans feuille "SuiviBENKT". Il y a une colonne pour tout les clients.

Hors, je ne veux pas de ces clients X. Je souhaite avoir tous les autres clients (dont les noms peuvent varier chaque mois) mais pas les "clients X". Je dois donc ajouter un critère de plus basé sur une exception à ne pas prendre. Comment faire?

Bien cordialement,

Bonjour,

D'où mon commentaire :

Bien sûr la première cellule du résultat (.[A1]) est a adapter.

Dans un filtre avancé vous ne pouvez pas indiquer ce que vous ne voulez pas mais ce que vous voulez, donc, diverses pistes à explorer :
- Rajouter une colonne NB.SI puis filtrer puis copier les cellules affichées et supprimer les doublons
- Rajouter une MEFC avec la même fonction NB.SI, filtrer puis copier les cellules affichées et supprimer les doublons
- Gérer via un dico

Mais sans fichier représentatif avec le résultat attendu je vous laisse adapter.

Cdlt,

Comme vous me l'avez conseillez j'ai crée une colonne supplémentaire en A pour faire une formule NBSI afin d'attribué des 0 et des 1 selon mon nom de client dans la feuille qui reçoit les donnée importées.

Ensuite j'ai écris le code suivant pour virer les lignes qui ne me convenait pas.

Sub SupprimerClientComptant()

Sheets("List Fact").Select
Dim i As Long
'Renseigner la valeur recherchée pour supprimer les lignes
MaVal = 0
For i = Range("A10000").End(xlUp).Row To 1 Step -1
'1 correspond à la colonne A
If Cells(i, 1).Value Like MaVal Then Rows(i).Delete
Next i
End Sub

Et ça marche plutôt bien! Un grand merci!

Par contre est t'il possible de faire la formule NBSi via VBA ? Et aussi est t'il possible de lier les 3 codes au même bouton et faire en sorte que chaque code s'exécute les uns à la suite des autres?

Bien cordialement,

Rechercher des sujets similaires à "advance filter vba conditions"