XL 2013 Extraire une partie du chemin d'accès dans une cellule.

  • Initiateur de la discussion Initiateur de la discussion YANOU38
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

YANOU38

XLDnaute Occasionnel
Bonjour à tous,
Mon chemin d'accès complet => Z:\AFFAIRES\18000\DOSSIERS\Essai 3.xlsm
Pour l'instant dans la cellule B3 j'ai => =STXT(CELLULE("nomfichier");13;5) qui me permet de récupérer le "18000" (5 caractères à partir du 13ième caractère).
J'en suis à récupérer la totalité du chemin par :
Code:
Sub test3()
Range("B3") = ThisWorkbook.FullName
End Sub
mais je n'arrive pas à extraire le "18000" (?)
Merci pour votre aide.
 
Bonjour vgendron, Jacky67, le Forum,
Merci à vous 2 pour vos solutions (il a fallu en choisir 1 en "Solution"...désolé 😉 )
Je l'ai donc inséré dans mon code.
Un problème subsiste :
Quand la macro se lance, elle me demande de "Mettre à jour les valeurs" à chaque cellule modifiée (par la suite, que je pointe le dossier ou que je fasse "Annuler" la cellule va bien chercher au bon endroit).
J'ai tenté :
Code:
Application.AskToUpdateLinks = False
en début de code
ou
Code:
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
Mais rien n'y fait...
Merci pour votre aide.
Mon code en entier :

VB:
Private Sub Workbook_Open()

    [B4] = Split(ThisWorkbook.FullName, "\")(2)
    Range("B5").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$16"
    Range("B7").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$18"
    Range("B8").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$19"
    Range("B9").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$20"
    Range("B10").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$21"
    Range("B13").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$27"
    Range("B14").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$42"
    Range("B15").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$43"
    Range("B18").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$39"
    Range("F13").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$27"
    Range("F14").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$42"
    Range("F15").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$43"
    Range("F18").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$39"
   
End Sub
 
Dernière édition:
Alors la cellule B4 arrive correctement puis tout le reste en #REF!
Si je vais dans la cellule B5, je fais "Entrée" dans la formule, je cible le dossier et le lien se fait.
Par la suite, si j'efface le contenu de toutes les cellules et que je relance la macro, cette fois ci, le lien avec la cellule B5 se fait [il garde en mémoire le lien (?)] .
Merci pour votre aide.
VB:
Private Sub Workbook_Open()

    Application.DisplayAlerts = False

    [B4] = Split(ThisWorkbook.FullName, "\")(2)
    Range("B5").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$16"
    Range("B7").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$18"
    Range("B8").Formula = "='\\srvp\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$19"
    Range("B9").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$20"
    Range("B10").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$21"
    Range("B13").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$27"
    Range("B14").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$42"
    Range("B15").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$43"
    Range("B18").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$39"
    Range("F13").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$27"
    Range("F14").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$42"
    Range("F15").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$43"
    Range("F18").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$F$39"
   
End Sub
 
Dernière édition:
Désolé,
Voici mon classeur.
Au début, sous l'Explorateur, j'ai un répertoire DOSSIER TYPE que je duplique et que je renomme.
Dans mon exemple il prend le nom de 18000.
VB:
[B4] = Split(ThisWorkbook.FullName, "\")(2)
me permet de récupérer 18000 dans ma cellule B4.
La formule, sous le DOSSIER TYPE donne (exemple avec la cellule B16) :
='\\srv\AFFAIRES\DOSSIER TYPE\DOSSIER\[Dossier type.xlsm]Questionnaire'!$B$16
Sous 18000, elle devient :
='\\srv\AFFAIRES\18000\DOSSIER\[Dossier 18000.xlsm]Questionnaire'!$B$16
d'où :
Code:
Range("B5").Formula = "='\\srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$16"
 

Pièces jointes

Dernière édition:
Désolé,
Voici mon classeur.
Au début, sous l'Explorateur, j'ai un répertoire DOSSIER TYPE que je duplique et que je renomme.
Dans mon exemple il prend le nom de 18000.
VB:
[B4] = Split(ThisWorkbook.FullName, "\")(2)
me permet de récupérer 18000 dans ma cellule B4.
La formule, sous le DOSSIER TYPE donne (exemple avec la cellule B16) :
='\\srvpcvs01\PCVS\AFFAIRES\DOSSIER TYPE\DOSSIER\[Dossier type.xlsm]Questionnaire'!$B$16
Sous 18000, elle devient :
='\\srvpcvs01\PCVS\AFFAIRES\18000\DOSSIER\[Dossier 18000.xlsm]Questionnaire'!$B$16
d'où :
Code:
Range("B5").Formula = "='\\srvpcvs01\PCVS\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$16"
RE..
Essaye avec
VB:
[B4] = Split(ThisWorkbook.FullName, "\")(5)
5 étant la position de "18000" dans le chemin du fichier qui lance la macro
 
Dernière édition:
as tu bien compris le fonctionnement de la fonction split?
cette fonction découpe une chaine de caractère avec le séparateur spécifié
exemple
chaine="ceci est le texte à découper"
séparateur = " "
split(chaine, séparateur)(0) '==> retourne le premier element de la chaine ==> ceci
split(chaine,séparateur)(3) '==>retourne le 4eme élément de la chaine==>texte

donc selon ou tu places ton classeur, et donc la position de 18000 dans la chaine, il va falloir adapter l'indice de retour (0 1 2 3 ....)

dans la macro
si tu fais application.displayalerts=false
il faut absolument le remettre à true en fin de macro
 
Merci à vous pour ces explications.

Le "18000" apparaissait bien en B4, mais je ne comprenais pas pourquoi avec le (2) du split [au lieu du (5)].
Avec le (5) j'avais => Erreur d'exécution'9': L'indice n'appartient pas à la sélection.
Mon chemin était erroné, javais noté :
='\\srv\AFFAIRES\DOSSIER TYPE\DOSSIER\[Dossier... [qui donne bien (5) avec "\" dans le split]
Au lieu de :
='srv\AFFAIRES\DOSSIER TYPE\DOSSIER\[Dossier... [qui donne bien (2) avec "\"dans le split]
Ce qui donne :
VB:
[B4] = Split(ThisWorkbook.FullName, "\")(2)
    Range("B5").Formula = "='srv\AFFAIRES\" & Range("B4") & "\DOSSIER\[Dossier " & Range("B4") & ".xlsm]Questionnaire'!$B$16"
Le 18000 étant bien rapatrié, je me contentais du (2) ... sans comprendre pourquoi.

Du coup, toujours pas de lien "automatique", toujours obligé de "Mettre à jour les valeurs".
Merci pour votre aide.
 
Dernière édition:
Bonjour vgendron, Jacky67, le Forum,
Merci pour votre aide.
J'ai bien pataugé...et viens de trouver pourquoi le lien ne se faisait pas correctement.
Le chemin contient \DOSSIERS\ avec un S ...
Le code était \DOSSIER\ sans S ...😕
Tout fonctionne.
Merci pour votre persévérance et votre pédagogie.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour