XL 2019 Filtre élaboré sur des données alphanumériques

Bana XIII

XLDnaute Nouveau
Bonjour à toute la communauté,

J'ai un petit soucis que j'aimerais partager en attente de vos inestimables apports.

J'ai un tableau comportant dans la colonne "C" des données alphanumériques au format "VEN-0001" qui sont incrémentées à chaque nouvelle vente (ces données correspondent à des numéros de factures).
J'essaie la macro suivante du filtre élaboré sur cette colonne mais elle ne marche pas:

' Application du filtre
ThisWorkbook.Sheets("VENTES").Range("TABLEAU_VENTES[#all]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange _
:=ThisWorkbook.Sheets("VENTES").Range("N1:O2"), CopyToRange:=ThisWorkbook.Sheets("VENTES").Range("Q1:AB1"), Unique:=False


Voici comment je procède: J'ai deux (02) textbox sur mon userform dans lesquels j'entre manuellement les critères de filtrage (intervalles de factures à filtrer). Le code ne marche pas lorsque les numéros de factures sont tapés manuellement, mais il marche parfaitement lorsque je copie des numéros des cellules vers les textbox.

Paradoxalement, lorsque je tape manuellement le texte "VEN-" dans les textbox, la macro semble fonctionner en procédant à l'extraction de toutes les données enregistrées dans la feuille, preuve que c'est le format alphanumérique des critères de filtre qui cause problème.

Je n'ai jamais été confronté à pareil situation et toute explication susceptible de m'outiller et surtout me sortir de cette galère sera la bienvenue.

Cordialement!
 

Staple1600

XLDnaute Barbatruc
Bonjour

Comme disait Rick dans les eighties " Ca marche pour moi!" ;)

Le contexte: un classeur (sans OGM), avec deux feuilles bien sous tous rapports
Que s'appelerio Quezac1 et Quezac2 (=> pour les millenials () )par exemple ;)

On copie cette macro dans un module standard
VB:
Sub Macro1()
Sheets("Quezac2").Range("A2").FormulaR1C1 = _
        "=AND(LEFT(Quezac1!RC[2],3)=""VEN"",AND(RIGHT(Quezac1!RC[2],3)*1>=6,RIGHT(Quezac1!RC[2],3)*1<=17))"
Sheets("Quezac2").Range("A1:A2").Select
Sheets("Quezac1").Cells(1).CurrentRegion.AdvancedFilter _
                Action:=xlFilterCopy, _
                CriteriaRange:=Range("Quezac2!Criteria"), _
                CopyToRange:=Range("Quezac2!C1"), Unique:=False
End Sub
Et on lance la macro quand c'est la feuille Quezac2 qui est la feuille active

Ce qui donne la chose suivante
filtreAformule.png

NB: Si un fichier avait été joint dans le 1er message, c'eut été plus simple ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 074
Messages
2 085 066
Membres
102 770
dernier inscrit
mathieu.lemaitre