Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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


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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…