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

XL 2013 Comparaison entre deux chaine de caractères

controlo

XLDnaute Occasionnel
Bonjour les amis du forum ,

Je me tourne vers vous car je but sur une comparaison de chaine de caractères en vba. J'essaye de vous expliquer : dans un répertoire j'ai plusieur fichiers pdf nommés xxxx 1-22 ou xxxx 10-22 ou xxxx101-22 , xxxx 111-22 et j'ai élaboré une macro qui va chercher dans un tableau excel une autre information qui me conduit à désigner ,par exemple le fichier xxxx 1-22 à ouvrir .La ou je but c'est que mon fichier fonctionne mais ne n'ouvre pas que le fichier xxxx 1-22 mais aussi le fichier xxxx 11-22.Pour cela voila le code qui permet de choisir le fichier à ouvrir :
If oFile.Name Like "*" & tch & "*.pdf" Then.
La variable tch contient par exemple 1-22 : c'est le fichier à recherché et à ouvrir et oFile.Name le nom du fichier qu'il trouve dans le répertoire , mais pour lui "11-22" et "1-22" sont semblables , alors que pour moi le fichier est le même.Donc avez-vous une idées pour effectuer une comparaison plus précise que Like "*" & tch & "*.pdf" ?

Merci pour votre aide
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,=

l'astérisque (*) remplace n'importe quel(s) caratère(s) => "11-22" like "*1-22" = TRUE
le point d'interrogation remplace (?) 1 caratère => "1-22" like "?-22" = true

Mais peut-être que si vous incluiez l'espace après le joker * cela le ferait "* " & tch & "*.pdf"
vous pourriez avoir "Machin 1-22.pdf" comme "Machin 11-22.pdf" en supposant que "1-22" ou "11-22" soit bien le contenu de tch

Cordialement

[Edit]hello @sylvanu, presque la même [/Edit]
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonsoir à tous
juste comme ça en passant
plutôt que d'utiliser le calculateur avec like et le joker
utilisez simplement le INSTR avec l'espace
VB:
Sub test()
chaine1 = "machin 11-22.pdf"
chaine2 = "machin 1-22.pdf"
cherche = " 1-22"
contrl1 = InStr(1, chaine1, cherche, vbTextCompare) > 0
contrl2 = InStr(1, chaine2, cherche, vbTextCompare) > 0

MsgBox "chaine1: " & contrl1 & vbCrLf & "chaine2 : " & contrl2
End Sub
 

Discussions similaires

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