XL 2016 Extraire une chaine de caratère avant un symbole en VBA

GuillaumeTenim

XLDnaute Nouveau
Bonjour à tous,

Je n'ai pas réussi à trouver la solution en écumant le net alors je m'en remets à vous. Je remplis des cellules Excel grace au GetOpenfilename. Jusque là tout se passe bien. Mais lorsque je veux extraire qu'une partie de la chaine de caractère, c'est la que tout se corse. Mon code est le suivant ; je l'ai simplifié pour la démonstration mais le résultat est le même.

VB:
Sub Test()
NomFichier="C:\Users\AGKY002\Documents\PE004-2G - Plan EXE Plomberie - RDC.pdf"
Extraction = Right(NomFichier, InStr(NomFichier, "\"))
MsgBox Extraction
End Sub

Je cherche à extraire automatiquement "PE004-2G - Plan EXE Plomberie - RDC.pdf" mais le problème c'est que mon code ne me sort que "pdf". L'extraction peut être plus ou moins longue, c'est pour cela que je dois utiliser "\" comme marqueur.

Quelqu'un aurait-il une solution.

Bien à vous.
 
Solution
Bonsoir Guillaume,

bienvenue sur le site XLD ! :)

dans un exo de ce genre, l'utilisation conjointe de Right et InStr engendre des fuites... 🤪

ouvre le fichier ci-dessous, et fais Ctrl t ➯ "PE004-2G - Plan EXE Plomberie - RDC.pdf"

VB:
Option Explicit

Sub Test()
  Dim NomFichier$, chn$, p%
  NomFichier = "C:\Users\AGKY002\Documents\PE004-2G - Plan EXE Plomberie - RDC.pdf"
  p = InStrRev(NomFichier, "\"): chn = Mid$(NomFichier, p + 1): MsgBox chn
End Sub

soan

GuillaumeTenim

XLDnaute Nouveau
Re,

Bon, maintenant c’est clair. Ta fonction renvoie le nom d’un fichier présent dans le PC, à partir de son adresse. Je viens d’essayer : YES, ça marche ! Et je n'aurais jamais su comment résoudre ce problème.

Je ne sais pas si @GuillaumeTenim voyait les choses ainsi. Personnellement, je pensais qu’il voulait extraire le nom d'un fichier contenu dans une chaîne de caractères correspondant à son adresse. D’où l’intérêt des expressions régulières pour résoudre ce problème.

Disons qu’il y eut comme un quiproquo. Quoi qu’il en soit, suivant le cas, nos fonctions apportent une réponse.

Pour le quidam qui passerait par là. Pour connaître l’adresse d’un fichier sans se prendre la tête :
« Avec l'Explorateur Windows, localisez le fichier dont vous avez besoin de copier le chemin d'accès. Pressez la touche Maj de votre clavier et, tout en la maintenant enfoncée, cliquez avec le bouton droit de la souris sur l'icône de ce fichier. Dans le menu qui s'affiche, cliquez sur Copier en tant que chemin d'accès. ».
Toutes les formules ou fonctions proposées marchent nickel. Je n’ai que l’embarras du choix. En tout cas un grand merci pour votre aide.

Cordialement.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Magic_Doctor, Guillaume, le fil,

Pour le quidam qui passerait par là. Pour connaître l’adresse d’un fichier sans se prendre la tête :
« Avec l'Explorateur Windows, localisez le fichier dont vous avez besoin de copier le chemin d'accès. Pressez la touche Maj de votre clavier et, tout en la maintenant enfoncée, cliquez avec le bouton droit de la souris sur l'icône de ce fichier. Dans le menu qui s'affiche, cliquez sur Copier en tant que chemin d'accès. »

c'est exact, je viens de le vérifier ; j'y ajoute : ça marche aussi si tu appuies sur Maj, que tu maintiens cette touche enfoncée, et que tu fais un clic droit sur le nom de fichier : dans le menu contextuel, y'a bien l'item « Copier en tant que chemin d'accès ». :) ce test a été fait sur mon PC avec Windows 7, mais je pense que c'est pareil sur les versions ultérieures de Windows : 8.0 ; 8.1 ; 10.

j'ai ajouté ces indications pour dire que ça n'est pas obligatoire de cliquer sur l'icône du fichier. ;) et même s'il y a la barre d'adresses de l'Explorateur de fichiers de Windows, merci quand même pour ton astuce. 👍

soan
 

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio