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 :

excel vba Récupérer le chemin du répertoire principal [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut excel vba Récupérer le chemin du répertoire principal
    Bonjour
    Quand j'écris un programme, je travaille sur 3 répertoires ou disques :
    • Ma clé usb (pour travailler à la maison),
    • Le répertoire serveur de mon service (pour travailler avec mes collègues)
    • Le répertoire utilisateur (pour les tests éventuels).

    Tous les jours je synchronise les trois
    Sauf que les chemins des répertoires principaux sont différents :
    Pour ma clé
    • A:\Mon Appli\Répertoire1
    • A:\Mon Appli\Répertoire2
    • A:\Mon Appli\Répertoire3...

    Pour mon service
    • G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire1
    • G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire2
    • G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire3...

    Pour les utilisateurs
    • G:\DIR25\DEP5\Sve6\Mon Appli\Répertoire1
    • G:\DIR25\DEP57\Sve6\Mon Appli\Répertoire2
    • G:\DIR25\DEP57\Sve6\Mon Appli\Répertoire3...


    je cherche un code qui me permette de récupérer le chemin du fichier ouvert jusqu'à Mon Appli, c'est à dire soit A:\Mon Appli\, soit G:\DIR20\DEP57\Sve2\Mon Appli\ soit encore G:\DIR25\DEP5\Sve6\Mon Appli\.

    Ce qui me permettrait de mettre à jour facilement mes macros, surtout si "quelqu'un" décide de dépalacer Mon Appli dans un autre service ?

    Merci, par avance, de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je ne suis pas certain si ça peut t'aider, mais
    Thisworkbook.Path est le répertoire où se trouve l'appli...

  3. #3
    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 chemin
    Bonjour Mouftie, Bonjour le Forum,

    Le plus efficace à mon sens est de retourner le chemin complet du fichier en shuntant les connexions réseaux.
    Autrement dit, donner le chemin correspondant aux lecteurs A, G....

    Pour ce faire.
    Dans un nouveau module

    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
    Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" _
     (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
    Public site As String
    Option Compare Text
     
    Public Function fnctGetUNCPath(ByVal PathName As String) As String
     
    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
    Pour un essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Référence()
     
    Dim maréf_true As String
    maréf_true = IIf(Len(fnctGetUNCPath(ThisWorkbook.FullName)) = 0, ThisWorkbook.FullName, fnctGetUNCPath(ThisWorkbook.FullName))
    Debug.Print maréf_true 
     
    End Sub
    Fourni par Gayot que l'on remercie.

  4. #4
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bnjour Parmi et Marcel
    Merci de vos réponses rapides,

    Parmi
    Oui, je connais le code mais le fichier xlsm, ne se trouve pas directement dans le répertoire Mon Appli, mais dans un sous répertoire donc si j'applique le code, je vais avoir par exemple •G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire2, or je voudrais •G:\DIR20\DEP57\Sve2\Mon Appli

    Marcel,
    Je n'ai pas tout compris à tes fonctions (beaucoup trop fort pour moi...), mais le résultat me donne le chemin complet, avec l'adresse sur serveur, le nom du fichier et son extension :
    \\SHARED.MaSte\DONNEES\DSPM\Partage\mcg\Mon Appli\Livrable\DossierParent.xlsm

    Merci

  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
    Ne t'inquiète pas. Trop fort pour moi également. C'est super Gayot qu'il faut saluer!
    Le principal reste que ce code te soit utile.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    mais le fichier xlsm, ne se trouve pas directement dans le répertoire Mon Appli, mais dans un sous répertoire donc si j'applique le code, je vais avoir par exemple •G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire2, or je voudrais •G:\DIR20\DEP57\Sve2\Mon Appli
    Et ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chemin = "G:\DIR20\DEP57\Sve2\Mon Appli\Répertoire2"  '=> Thisworkbook.Path
    MsgBox Left(chemin, InStrRev(chemin, "\"))
    au plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Left(Thisworkbook.Path, InStrRev(Thisworkbook.Path, "\"))

  7. #7
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Marcel,
    non, ce code ne me sert pas, je voudrais retirer à Thisworkbook.Path un ou 2 sous répertoires. ta fonction est trop complète.
    Merci

  8. #8
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Merci Parmi,
    c'est presque parfait... mais je pourrais faire avec.
    Serait-il possible de retirer 2 sous-répertoires au lieu d'un ?
    en tout cas merci, je n'avais pas pensé utiliser ces fonctions.

  9. #9
    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
    Salut,

    Il faut adapter!
    Tu peux compléter cette fonction par la méthode Split.

    Le résultat en sera une variable tableau de dimension 1 que tu peux gérer à souhait

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim tb
    tb = Split(maréf_true, "\")
    Debug.Print tb(UBound(tb))
    Si je peux me permettre, le but du Forum est de donner des bases.
    Si le demandeur fait la démarche de les comprendre puis de les adapter, alors il en tirera plus de bénéfice qu'un simple Copier/Coller
    C'est la recherche qui permet de progresser.
    Du moins, c'est mon avis.

  10. #10
    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
    Salut,

    Je viens de voir les derniers échanges.
    Si tu ne veux pas utiliser la fonction citée plus haut, alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim tb As Variant, i As Byte
    Dim lerép As String
    Dim nboff As Byte
     
    tb = Split(ThisWorkbook.Path, "\")
    'nombre de sous répertoires à retirer
    nboff = 2
    lerép = ""
    For i = LBound(tb) To UBound(tb) - nboff
          lerép = lerép & "\" & tb(i)
    Next i
    Debug.Print lerép

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    chemincomplet =thisworkbook.path
    parent=split(chemiconmplet,"\")
    newchemin=split(cheminconplet ,parent(ubound(parent)-x)(0)  & thisworkbook.name 
     
    x étant l'index du parent  -1 pour le plus proche et ainsi de suite
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Merci Marcel,
    j'espère que je ne t'ai pas froissé (je sais mieux repasser que coder ;>)
    Je suis bien d'accord, j'essaie toujours de comprendre et d'adapter, mais là, j'ai pas tout compris et je ne connais pas du tout la méthode Split.
    J'ai déjà essayé de la comprendre, mais c'était il y a un moment, je vais peut-être reessayer...
    En tout cas, le tout (fonction et méthode) va me servir (même en aveugle).
    Alors encore meci

  13. #13
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonsoir Patrick
    Bonsoir à tous
    Un grand merci à tous, j'ai encore appris pleins de choses sur ce site.
    J'ai maintenant tout ce qu'il me faut, jusqu'à la prochaine fois.
    A bientôt donc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/09/2017, 10h02
  2. Récupérer le chemin du répertoire Démarrage
    Par vincent63 dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2008, 12h23
  3. [RCP] Récupérer le chemin du répertoire d'une application RCP
    Par nienor dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 21/03/2007, 09h56
  4. Excel VBA récupérer la signature Outlook
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/12/2006, 16h19
  5. Réponses: 4
    Dernier message: 08/08/2006, 23h33

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