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

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.
 

YANOU38

XLDnaute Occasionnel
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:

YANOU38

XLDnaute Occasionnel
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:

YANOU38

XLDnaute Occasionnel
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

  • EPM.xlsm
    28.8 KB · Affichages: 7
Dernière édition:

Jacky67

XLDnaute Barbatruc
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:

vgendron

XLDnaute Barbatruc
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
 

YANOU38

XLDnaute Occasionnel
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:

YANOU38

XLDnaute Occasionnel
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 ...:confused:
Tout fonctionne.
Merci pour votre persévérance et votre pédagogie.
 

Discussions similaires

Statistiques des forums

Discussions
314 626
Messages
2 111 297
Membres
111 093
dernier inscrit
Yvounet