Chemin d'accès fichier
Mon code ne tient pas compte de ce qu'il y a dans le dossier, (ni le nombre de sous dossiers ni leurs noms) il récupère juste le chemin d'accès et le nom de fichier que vous avez sélectionné via la boite de dialogue et vous retourne une chaîne de caractères qui peut vous permettre le cas échéant de retrouver le dit fichier plus tard moyennant qu'il n'ai changé ni de nom ni d'emplacement entre temps.. Vous vouiez bien ne récupérer que le chemin pas manipuler les dossiers et les déplacer dans votre ordi auquel cas, effectivement mon code n'est pas suffisant ?
Lequel de vos codes parlez-vous ? Que je vous montre le résultat que j'obtiens
Merci de votre aide
Clem
celui-ci
Sub Récupérer_CheminAcces_AvecFich()
Dim chemin_fichier As String
Dim chemin As String
Dim tableau As Variant
chemin_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")
'range les différentes partie du chemin d'accès dans un tableau
tableau = Array(Split(chemin_fichier, "\"))
'récupère qu'une partie du chemin d'accès
'Met bout à bout le contenu du tableau grâce à tableau(0)(Le numéro de la cellule qui contient ce que vous voulez garder : voir ex)
chemin = "\" & tableau(0)(2) & "\" & tableau(0)(3) & "\" & tableau(0)(4)
MsgBox chemin
End Sub
exemple C:\Users\pc\Documents\classeur1.xlsx
tableau(0)(0) = c:
tableau(0)(1) = Users
tableau(0)(2) = pc
tableau(0)(3)=Documents
tableau(0)(4)=classeur1.xlsx
celui-ci
Sub Récupérer_CheminAcces_AvecFich() Dim chemin_fichier As String Dim chemin As String Dim tableau As Variant chemin_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche") 'range les différentes partie du chemin d'accès dans un tableau tableau = Array(Split(chemin_fichier, "\")) 'récupère qu'une partie du chemin d'accès 'Met bout à bout le contenu du tableau grâce à tableau(0)(Le numéro de la cellule qui contient ce que vous voulez garder : voir ex) chemin = "\" & tableau(0)(2) & "\" & tableau(0)(3) & "\" & tableau(0)(4) MsgBox chemin End Sub
exemple C:\Users\pc\Documents\classeur1.xlsx
tableau(0)(0) = c:
tableau(0)(1) = Users
tableau(0)(2) = pc
tableau(0)(3)=Documents
tableau(0)(4)=classeur1.xlsx
Donc il y a bien une prise en compte du nombre de dossier avec le tableau ?
Puisque en fonction du fichier que je vais chercher, je n'obtiens pas là même chose:
(le chemin ne va pas jusqu'au fichier sélectionné dans la 2eme image)
Clem
Normalement non, car le type de la variable tableau est de type variant et qui plus est, je ne définis pas de limite à ce tableau donc si pour accéder à mon fichier je dois passer par 4 dossiers comme mon exemple mon tableau aura 5 cellules, si pour accéder au fichier je dois passer par 6 dossiers le tableau aura 7 cellules.
Dans votre cas, je vous conseille d'afficher le volet des variables locales sur l'éditeur de visual basique et de vérifier dans la variable tableau combien celle-ci contient de cellule avant de faire votre concaténer et d'écrire votre ligne de code finale en conséquence.
courage vous allez y arriver
Normalement non, car le type de la variable tableau est de type variant et qui plus est, je ne définis pas de limite à ce tableau donc si pour accéder à mon fichier je dois passer par 4 dossiers comme mon exemple mon tableau aura 5 cellules, si pour accéder au fichier je dois passer par 6 dossiers le tableau aura 7 cellules.
Dans votre cas, je vous conseille d'afficher le volet des variables locales sur l'éditeur de visual basique et de vérifier dans la variable tableau combien celle-ci contient de cellule avant de faire votre concaténer et d'écrire votre ligne de code finale en conséquence.
courage vous allez y arriver
Donc je dois compter le nombre de dossiers pour accéder à mon fichier et en fonction réaliser ma ligne de code ?
exactement, une boucle devrait suffire
Je commence petit à petit à comprendre...
J'ai une vague idée d'à quoi pourrait ressembler le code
i = nb de valeurs dans le tableau - 1
chemin = ".\" & tableau(0)(i)
Tant que i < nb de valeurs dans le tableau :
chemin = chemin & "\" & "\" tableau (0)(i)
i = i +1
Fin tant que
Par contre, si je change mon dossier PROJET de place, il faudra remodifier le code
Ne peux t-on pas faire un code qui supprime automatiquement tout le chemin qui arrive avant le dossier PROJET ?