IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Chemin d'accès récupéré par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut Chemin d'accès récupéré par VBA
    Bonjour à toutes et à tous,

    J'ai "développé", enfin j'ai créé un fichier Excel avec des formulaires.
    Dans ces formulaires, j'y ai mis des images (pour que ça fasse plus beau). Je passe donc par loadpicture("E:\_Mes Textes\projets\images\image.gif").
    Cela me pose problème car je ne peux utiliser ces fichiers que si l'ensemble du chemin d'accès existe, et donc quand je réinstalle mon ordinateur, je suis obligé de partitionner mon disque dur.

    Alors j'aurai aimé savoir comment j'aurai pu récupérer le chemin d'accès en fonction de l'emplacement de mon fichier Excel. Et donc de remplacer ce chemin en dur, par une variable dans loadpicture(variable &"\images\image.gif").
    Sachant que mon fichier est soit dans E:\_Mes Textes\Projets\ soit dans E:\_Mes Textes\Projets\OK\.

    J'espère que cela est assez clair, et qu'une âme charitable pourra m'aider.

    Merci.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    via ThisWorkbook.Path

    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _________________________________________________________________________________________________________
    Je suis Paris, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut
    Merci Marc-L,
    Je viens de tester le code avec adresse = ThisWorkBook.Path
    et je l'ai mis dans un msgbox, cela me donne :
    E:\_Mes Textes\projets\OK

    Donc si je place la variable public à l'ouverture du fichier, et que je fais un logo.picture = LoadPicture(adresse & "image.gif")
    J'ai une erreur... Normal vu que mon image.gif se trouve dans :
    E:\_Mes Textes\projets\images\

    Du coup, comment Est-ce que je fais pour avoir le bon chemin ?

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    il te suffit de remonter dans la hierarchie des dossiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function getParentFolder2(ByVal strFolder0)
      Dim strFolder
      strFolder = Left(strFolder0, InStrRev(strFolder0, "\") - 1)
      getParentFolder2 = Left(strFolder, InStrRev(strFolder, "\") - 1)
    End Function
    a utiliser avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strFolder As String
    strFolder = getParentFolder2(ThisWorkbook.Path)
    logo.picture = LoadPicture(strFolder & "\images\image.gif")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à tous,

    Juste un petit ajout si je peux me permettre. Ce même si ce n'est pas le sujet.
    Parfois, les connexions de lecteur réseau posent problème (E:)

    Pour obtenir le chemin intégral d'un fichier ouvert à partir d'un lecteur réseau, une fonction fournie par Gayot sur ce forum, que je remercie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Compare Text
     
    Public Function fnctGetUNCPath(ByVal PathName As String) As String
     
    'fonction donnée par GAYOT sur forum, discussion ouverte par MG
    'http://www.developpez.net/forums/d1025923/logiciels/microsoft-office/excel/macros-vba-excel/recherche-repertoire-libelle-integral/
     
    'comment récupérer le chemin intégral du fichier si connection lecteur réseau
    'tuto :
    'http://access.developpez.com/sources/?page=reseau#GetUNC
     
    Const MAX_UNC_LENGTH  As Integer = 512
    Dim strUNCPath As String
    Dim strTempUNCName As String
    Dim lngReturnErrorCode  As Long
     
      strTempUNCName = String(MAX_UNC_LENGTH, 0)
      lngReturnErrorCode = WNetGetConnection(Left(PathName, 2), strTempUNCName, _
        MAX_UNC_LENGTH)
     
      If lngReturnErrorCode = 0 Then
         strTempUNCName = Trim(Left(strTempUNCName, InStr(strTempUNCName, vbNullChar) - 1))
         strUNCPath = strTempUNCName & Mid(PathName, 3)
      End If
     
    fnctGetUNCPath = strUNCPath
    End Function
     
    Sub essai()
    Debug.Print fnctGetUNCPath(ThisWorkbook.FullName)
    End Sub

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut
    Bonjour MarcelG,

    Tu fais bien te mettre cette petite touche de subtilité dans ce post.

    Effectivement, je ne suis pas ce cas... ou devrais-je dire pas encore.
    J'ai dans l'idée de déporter cette information sur mon NAS et donc oui à un moment, je me serai posé la question.

    Je vais mettre ce code dans un de mes nombreux fichiers d'aide VBA.

    Merci

    Citation Envoyé par MarcelG Voir le message
    Bonjour à tous,

    Juste un petit ajout si je peux me permettre. Ce même si ce n'est pas le sujet.
    Parfois, les connexions de lecteur réseau posent problème (E

    Pour obtenir le chemin intégral d'un fichier ouvert à partir d'un lecteur réseau, une fonction fournie par Gayot sur ce forum, que je remercie.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    il te suffit de remonter dans la hierarchie des dossiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function getParentFolder2(ByVal strFolder0)
      Dim strFolder
      strFolder = Left(strFolder0, InStrRev(strFolder0, "\") - 1)
      getParentFolder2 = Left(strFolder, InStrRev(strFolder, "\") - 1)
    End Function
    a utiliser avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strFolder As String
    strFolder = getParentFolder2(ThisWorkbook.Path)
    logo.picture = LoadPicture(strFolder & "\images\image.gif")
    Bonjour Jean-Philippe,

    Hier soir, j'ai testé ta réponse. Cela a bien fonctionné en mettant la fonction au début du code de mon formulaire, et en modifiant l'appel à mon image.gif.

    Ce que je n'ai pas eu le temps de tester, c'est dans tous les autres formulaires. Je pense que je n'ai pas besoin de réécrire à chaque fois la fonction, il suffit qu'elle soit public, tout comme la variable strFolder.

    Par contre, je les place dans "ThisWorkbook" ou ailleurs dans mon VBAProject ?
    Je pose la question avant d'avoir testé...

    En tout cas merci pour ta prompte réponse

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresseImg = Mid(adresse, 1, InStrRev(adresse, "\")) & "images\"

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresseImg = Mid(adresse, 1, InStrRev(adresse, "\")) & "images\"
    Bonjour Menhir,

    Merci de ta réponse... Je pense que je dois rajouter ton bout de code dans la première réponse de Marc-L.

    Je testerai aussi ce soir.

    PS : Il y a beaucoup de "comme toi" qui poussent par chez moi...

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par doclefou Voir le message
    E:\_Mes Textes\projets\OK

    J'ai une erreur... Normal vu que mon image.gif se trouve dans :
    E:\_Mes Textes\projets\images\
    Comme je n'avais pas de viscères de mouton sous le coude je ne pouvais le deviner ‼

    Autres voies pour le fun :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        SP = Split(ThisWorkbook.Path & "\", "\")
        SP(UBound(SP) - 1) = "images"
        DOSSIER$ = Join$(SP, "\")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DOSSIER$ = Left$(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\")) & "images\"
    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut
    Bonjour Marc-L,
    Citation Envoyé par Marc-L Voir le message
    Comme je n'avais pas de viscères de mouton sous le coude je ne pouvais le deviner ‼
    Effectivement, si tu n'as pas éviscéré le mouton, cela va être compliqué

    Mais il me semblait qu'en écrivant :
    "Je passe donc par loadpicture("E:\_Mes Textes\projets\images\image.gif")"
    Puis :
    "Sachant que mon fichier est soit dans E:\_Mes Textes\Projets\ soit dans E:\_Mes Textes\Projets\OK\"
    Il n'y aurait aucun sacrifice de mouton... Comme quoi, dans la communication, il est très important de se faire comprendre et non de penser être compris.

    Comme je ne viens de voir ta réponse que maintenant, je ne pourrai tester que ce soir, et juste pour le fun je verrai bien ce que donne ce nouveau bout de code.
    Merci encore de ta solution

Discussions similaires

  1. [Toutes versions] Chemin d'accès disque réseau VBA OSX
    Par FrancisKu dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/03/2015, 16h46
  2. [AC-2010] Plus de noms tables récupérés par VBA que mes propres tables ?
    Par _C14_ dans le forum VBA Access
    Réponses: 6
    Dernier message: 30/05/2012, 17h33
  3. Acces web par vba
    Par amnorian dans le forum Macros et VBA Excel
    Réponses: 34
    Dernier message: 04/07/2011, 15h36
  4. Réponses: 15
    Dernier message: 22/10/2007, 11h14
  5. [VBA-E]récupérer le chemin d'accès d'un fichier
    Par gil68 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/02/2006, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo