[[Excel VBA]]créer chemin entre macro feuille
Lila_35
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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
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
-
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 thisworkbookPrivate 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.xlsPrivate 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> -
-
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 -
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 quoici joint démo en utilisant la base de registres (HKey_current_user/software / VB and VBA Program settings)
? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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. -
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.