[[Excel VBA]]créer chemin entre macro feuille

Lila_35 -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

La situation est :
d'une part un fichier MesMacros.xls où se trouve toutes mes macros et d'autre part un fichier MesFeuilles.xls où j'entre mes données et qui fait appel aux macros de MesMacros.xls.

Dans MesFeuilles.xls, il y a tous les mois de l'année (janvier, février, ... , décembre) avec trois boutons fesant appel aux macros plus une feuille (description) non visible par l'utilisateur où l'on stock des données.
C'est sur cette feuille, dans une cellule que je souhaite stocker le chemin de MesMacros.xls afin de ne pas avoir à re paramétrer tous les boutons pour chaque feuille.

Je dois utiliser l'afffectation suivante mais je ne sais pas où la traiter.

Chemin = ThisWorkbook.Path

Merci

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    si tonclasseurs.xls est dans le même dossier que macros.xls, les macros que je t'avais donné l'autre jour n'ont pas besoin d'indiquer le chemin si tu es situé dans ce dossier.
    http://www.commentcamarche.net/forum/affich 12938476 vba excel selectionner un plage

    ici, macros.xls peut être déplacé ailleurs sur le m^me poste et l'inscription automatique de son chemin dans la base de registre permet d'indiquer celui-ci dès que tu ouvres tonclasseur.xls

    macro dans macros.xls
    dans thisworkbook
    Private Sub Workbook_Open()
    Dim chemin As String
    chemin = ThisWorkbook.Path
    'écriture dans HKey_current_user/software / VB and VBA Program settings
     SaveSetting appname:="ccm", section:="lilas", key:="lieu", setting:=chemin
    End Sub
    
    dans module1
    <code>Sub EffacedansRegistre()
         On Error Resume Next
         DeleteSetting "ccm"
    End Sub

    -----
    macro dans tesclasseurs.xls
    Private Sub Workbook_Open()
    'lecture dans HKey_current_user/software / VB and VBA Program settings
    Range("A1") = GetSetting(appname:="ccm", section:="lilas", key:="lieu")
    End Sub

    </code>
    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    salut lila35

    Hé,ho, laisse moi le temps de me réveiller!...
    ci joint démo en utilisant la base de registres (HKey_current_user/software / VB and VBA Program settings)
    https://www.cjoint.com/?gxk1dB0Dwf
    après avoir télécharger dans un coin perdu de ton HD
    tu lances macros.xls
    tu fermes
    tu lances classeur2 (pour tes classeurs de travail)
    tu as le chemin de macros.xls en cellule A1; a toi d'adapter avec une variable publique

    les macros sont dans thisworkbook et pour nettoyer la base de registre dans un module de macros.xls
    0
  3. Lila_35
     
    Bonjour michel_m,

    Malheureusement, je ne peux pas télécharger ton fichier (restriction toujours là).

    J'ai déjà un petit truc codé dans ThisWorkbook de MesFeuilles.xls :
    Private Sub Workbook_Open()
    
    Dim chemin As String
    Dim fichier As String
    Dim nb_car As Integer
    
        nb_car = Len(ThisWorkbook.Name)
    
        chemin = Left(ThisWorkbook.Path, Len(ThisWorkbook.FullName) - nb_car)
        chemin = chemin & "\MesMacros.xls"
        
    
    End Sub
    


    C'est quoi
    ci joint démo en utilisant la base de registres (HKey_current_user/software / VB and VBA Program settings) 
    ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Lila_35
     
    Ok super info michel_m.

    Je ne suis pas sur que les utilisateurs aura les droits pour passer par la base de registre. N'y aurait il pas un autre moyen?

    Sinon cette solution est très bien.

    Merci pour ton aide.
    0
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    faut voir avec tes admins: normalement pas de pb car, sans le savoir (heureusement d'ailleurs), on écrit et on extrait tout le temps des données dans les registres.
    Attention, cependant, le truc que je t'ai donné ne fonctionne qu'en monoposte: si macro.xls est sur un serveur, on ne peut l'utiliser.
    0