Chaîne de caractère [Résolu]

Signaler
Messages postés
33
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
5 février 2009
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Je suis bientôt à la fin de mon programme, mais il me manque une dernière chose.
Je voudrais bien extraire une chaine de caractère à l'interieur d'une autre.
Voici le problème:

Chaîne de caractère d'origine: g:\jeux\jeux1\jeux1.exe
Chaîne de caractère désiré: g:\jeux\jeux1\

ou

g:\jeux2.exe
g:\

Le problème est que le nombre de \ n'est pas constant. Alors comment faire pour extraire tout la chaîne précédent le dernier \ ????? Merci de votre aide

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
InStrRev pour trouver le premier \ en partant de la fin.

Ensuite un Left pour extraire tout ce qui est à gauche, en prenant comme longueur le résultat précédent -1

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonsoir,

Utilise donc InstRev avec le caractère "". C'est tout !...
Messages postés
33
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
5 février 2009

J'ai juste eu a rajouter un Mid et c'est nickel merci
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
rajouté un mid ? Inutile ! La solution de Casy est correcte et complète !
Par curiosité, tu as codé quoi ?
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous,

Ce qui donne:

chemin_complet = "D:\Mes scripts VBFrance\Test\Fichiers\mon fichier.txt"

MsgBox Left(chemin_complet,Len(chemin_complet)-Len(Mid(chemin_complet, InStrRev(chemin_complet, "") + 1))) &vbCrLf& _
             Mid(chemin_complet, InStrRev(chemin_complet, "") + 1)

jean-marc
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour Jean-Marc,

Pourquoi recalculer avec le len ?

 MsgBox Mid(chemin_complet, 1, InstrRev(chemin_complet, "")) & vbCrLf & Mid(chemin_complet, InstrRev(chemin_complet, "") + 1)
Messages postés
33
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
5 février 2009

Voilà ce que j'ai utilisé. Marche nickel

repertoire = Mid(wbExcel.Worksheets(1).Cells(j, 4), 1, InStrRev(wbExcel.Worksheets(1).Cells(j, 4), "", -1))
ShellExecute vbNull, "open", exe, vbNull, repertoire, SW_SHOWNORMAL
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
ouais !
Plutot que de faire un mid(ch, 1, L), fais simplement un left(ch, L), cela marchera de ma même façon et sera plus simple à lire
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous,

Bonjour Jacques,
Entièrement raison, je me suis emporté !

jean-marc