Dossier parent, chemin relatif [Résolu]

kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention - 2 juin 2017 à 18:11 - Dernière réponse : kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention
- 6 juin 2017 à 16:48
Bonjour,
j'ai trouver des éléments de réponse sur le forum mais je n'ai pas réussi à faire ce que je voulais...
J'ai un fichier Excel qui s'appelle "123"
le chemin pour y accéder est : "c:/aaa/bbb/ccc"
le chemin du fichier est donc : "c:/aaa/bbb/ccc/123"
Dans le dossier "ccc" j'ai un autre dossier "456" dans lequel j'y est ajouter des images.
nom d'une image par exemple : "Image 1"

Dans mon fichier Excel "123" je fait appelle à des images qui sont dans le dossier "456"


Sub inserImage()
répertoirePhoto = "c:/aaa/bbb/ccc/456"
nom = "Image 1"
Set c = Range("C31").MergeArea
With ActiveSheet
.Pictures.Insert(répertoirePhoto & nom & ".jpg").Name = nom
End With
End sub


Le problème est que si je déplace mon dossier "ccc" autre part je ne peut plus faire appelle à mon "Image 1" dans mon fichier "123"

Je sais que pour accéder au dossier parent il faut utiliser ".." mais je ne sais pas trop comment faire dans mon exemple. Il faut créer un chemin relatif. J'ai essayé plusieurs chose mais je n'y arrive pas.
Merci d'avance si vous pouvez m'aider. Et je m'excuse par avance si je n'ai pas réussi malgré toutes les réponses à ce genre de question que l'on peut trouver sur internet.

Cordialement,
Afficher la suite 

6 réponses

Répondre au sujet
jee pee 21324 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par jee pee le 2/06/2017 à 19:26
+1
Utile
5
Bonjour,

Je n'utilise pas de procédure VB/VBA, mais le principe serait :
répertoirePhoto = "./456"
ou tout simplement
répertoirePhoto = "456"

car dans ton cas tu n'as pas à remonter d'un cran avec ..

Mais le chemin relatif signifie que tu es sûr au départ d'être dans c:/aaa/bbb/ccc/ . Je ne sais pas si le répertoire courant en VB/VBA correspond au nom du répertoire qui contient le fichier, où à un autre répertoire qui serait lié à l'icone Excel.

cdlt



        un étranger, c'est un ami qu'on n'a pas encore rencontré.
Cette réponse vous a-t-elle aidé ?  
jee pee 21324 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 2 juin 2017 à 19:34
il doit bien exister une fonction vb qui récupère le nom du répertoire dans le nom complet du fichier courant, tu pourrais donc plutôt initialiser ta variable avec quelque chose du type :
répertoirePhoto = extract.nomdir(currentfile)
ma fonction étant totalement inventée ;-)

2 remarques, es-tu certain de pouvoir utiliser des / dans les noms ? Sous windows c'est plutot un \ : c:\aaa\bbb\ccc\456, et quand tu constitues le nom de fichier, ne faut-il pas rajouter un \ entre le nom de répertoire et le nom de fichier :
.Pictures.Insert(répertoirePhoto & '\' & nom & ".jpg").Name
ou de mettre l' \ en fin du nom du répertoire.
kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention > jee pee 21324 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 6 juin 2017 à 15:18
BONJOUR,
J'ai déjà essayer :
répertoirePhoto = ".\456\
mis cela ne fonctionne pas.

T'es 2 remarque sont exacte. Je me suis trompé en écrivant ce mail entre "/" et "\" et il y a bien un "\" a la fin du répertoire.

Après je sais pas si bien compris le fonctionnement des chemins relatifs mais l'idée est de pouvoir déplacer mon dossier "ccc" et que je puisse toujours faire appel à IMAGE1 dans mon fichier excel 123
kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention - 6 juin 2017 à 15:22
en faite c'est bon ça fonctionne avec
répertoirePhoto = ".\ccc\456\
Merci de ta réponse :)
Il fallait juste remonter d'un dossier de plus

Merci
kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention - 6 juin 2017 à 15:57
Donc... en faite quand mon dossier "ccc" est sur mon bureau ça fonctionne bien en utilisant
répertoirePhoto = ".\ccc\456\
Mon image s'insère bien.
Mais quand je déplace mon dossier "ccc" dans "Mes document" ça ne fonctionne plus.
Je ne comprend pas pourquoi ????
kev76150 13 Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention - 6 juin 2017 à 16:48
J'ai trouver une autre solution en utilisant :
Dim chemin As String
ChDir (ThisWorkbook.Path)
ChDir "."
chemin = CurDir(ThisWorkbook.Path)


répertoirePhoto = chemin + "456\"

J'ai un autre soucie maintenant qui a rien a voir. Je vais donc poster un autre sujet sur le forum

Merci
Commenter la réponse de jee pee