Signaler

Dossier parent, chemin relatif [Résolu]

Posez votre question kev76150 13Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 2017 Dernière intervention - Dernière réponse le 6 juin 2017 à 16:48 par kev76150
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 
Utile
+1
plus moins
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



jee pee 21037Messages postés mercredi 2 mai 2007Date d'inscription ModérateurStatut 24 juin 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.
Répondre
kev76150 13Messages postés mardi 13 décembre 2016Date d'inscription 7 juin 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
Répondre
kev76150 13Messages 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
Répondre
kev76150 13Messages 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 ????
Répondre
kev76150 13Messages 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !