TRI "se terminant par" + variable

Bonjour à tous,

Je coince sur un truc et impossible d’écrire les bonnes requêtes dans google (ou qwant) pour trouver la réponse.

J’essaie de faire un tri en vba avec une variable comme critère, cette variable étant les deux derniers caractères d’une chaine renseignée par l’utilisateur dans une cellule.

Jusqu’ici tout va bien.

Mon souci est que je voudrais que mon tri emploie la fonction « se termine par », qui s’écrit normalement avec l’astérisque

Comme ici où ça marche :

Sheets("JOURNAL 2017").Range("$A$21:$AE$10000").AutoFilter Field:=5, Criteria1:="*17"

Mais dans mon cas le "*17" change en fonction de ce que l’utilisateur renseigne dans une cellule.

J’ai donc écrit ça :

ma_val = Right(Sheets("APPEL DE FONDS 2017").Range("G11").Value, 2)

Sheets("JOURNAL 2017").Range("$A$21:$AE$10000").AutoFilter Field:=5, Criteria1:="*" & ma_val

J’essaie dans tous les sens,

*ma_val

"*ma_val"

etc

je ne trouve pas

Il doit y avoir une syntaxe qui m’échappe pour pouvoir introduire cet astérisque.

C’est possible d’écrire ma variable avec un astérisque ?

Merci pour votre aide.

Bonsoir earmeek,

Tu parles de tri, mais c'est de filtre qu'il s'agit, non?

Je viens de tester quelque chose qui me paraissait ressembler à ce que tu décris, sur un fichier qui n'a peut-être rien à voir. Tout ce que je peux dire c'est: "chez moi, ça marche!"

Si on disposait d'un fichier exemple, on pourrait sans doute en dire plus. C'est d'autant plus surprenant que la première syntaxe fonctionne et pas la seconde!?

Bonjour,

Merci pour ton retour.

Excuse-moi, oui c'est un filtre.

Voici un fichier.

où je teste ma valeur avec 6 caractères (soit la totalité de la chaine) et ça marche

mais avec "se termine par" les deux derniers caractères > impossible!

Merci pour ton aide.

30filtre.xlsm (42.54 Ko)

Bonjour,

Ta colonne E contient des données purement numériques. Sur ce type de données, tu ne peux utiliser que des filtres numériques. Or ton Criteria:= "*" & ma_val correspond au "se termine par" qui est un filtre textuel ... teste en faisant un filtre automatique "à la main" avec "se termine par 17", si tu veux illustrer.

Tu peux faire une boucle, du genre

For Each c In Sheets("JOURNAL 2017").Range("E22:E85")
    If Right(c, 2) <> ma_val Then c.EntireRow.Hidden = True
Next c

Tu peux aussi utiliser un filtre avancé avec une formule comme critère (voir la pièce jointe).

Le filtre avancé peut être activé par macro (voir dans la fenêtre de code de "Journal 2017")

Rechercher des sujets similaires à "tri terminant variable"