Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 nom des chemin pour plusieurs macros

phil0202

XLDnaute Nouveau
Bonjour,
je suis face à 2 problèmes
Probleme1
dans un fichier, j'utilise plusieurs marcro +- indépendants l'une de l'autre.
pour faciliter l'écriture et la lecture, j'utilise des nom pour mes fichiers
CheminCPTA = "C:\Users\XXX\Comptable\"
FichierCPTA = " vente 2019.xlsx"

il est supposé que ce fichier est déjà ouvert

ainsi pour aller dans le fichier le fichier comptable, je me contente de la ligne suivante
Workbooks(FichierCPTA).Sheets("IN aperçu 2019").Activate

ce que je voudrais c'est définir une seule fois pour tout le classeur mes différents noms : CheminCPTA FichierCPTA ....

Problème2
Cerise sur le gâteau, je voudrai à terme, via un userform (presque prêt) choisir si je travail avec l'ordi1 et donc la série de chemin1 OU sur l'ordi 2 et donc la série de chemin2 (je travaille avec 2 ordi dont les chemin d'accès sont différents.
 

job75

XLDnaute Barbatruc
Bonjour phil0202, bienvenue sur XLD,

Placez cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Names.Add "CheminCPTA", "C:\Users\XXX\Comptable\" 'nom défini
Names.Add "FichierCPTA", "vente 2019.xlsx" 'nom défini
End Sub
Enregistrez le fichier en .xlsm, fermez-le puis rouvrez-le.

Ensuite vous pouvez utiliser en VBA ces noms définis en les mettant entre crochets, exécutez par exemple :
VB:
Sub Test()
MsgBox [CheminCPTA], , "Chemin"
MsgBox [FichierCPTA], , "Fichier"
End Sub
A+
 

phil0202

XLDnaute Nouveau
Super
cela répond parfaitement à ma question1. merci!
par contre, vu que les modifs ne sont prise en compte que après fermeture et ouverture, comment puis-je changer les chemin en fonction que ce soit l'ordi 1 ou l'ordi 2?

Merci beaucoup
 

job75

XLDnaute Barbatruc
Si le chemin est toujours le chemin d'accès du fichier utiliser :
VB:
Private Sub Workbook_Open()
Names.Add "CheminCPTA", Path & "\" 'nom défini
Names.Add "FichierCPTA", "vente 2019.xlsx" 'nom défini
Saved = True 'évite l'invite à la fermeture si aucune modification
End Sub
Sinon il suffirait de tester le nom de l'ordi avec If Environ("UserName") = "TOTO" Then ... Else ...

J'ai complété avec Saved = True c'est mieux.
 

phil0202

XLDnaute Nouveau

le probleme est ...
avec l'ordi 1
user = AZERT
chemin = C:\ABC\....\Comptable\

avec l'ordi 2
user = AZERT
chemin = D:\DEF\...\Comptable\

Je suis en train de tester une solution (dans ThisWorkbook - et suivant ton exlication)

VB:
Private Sub Workbook_Open()
Names.Add "O_CheminCPTA", "C:\ABC\....\Comptable\"
Names.Add "N_CheminCPTA", "D:\DEF\...\Comptable\"
End Sub

ensuite, avec un userform, je demande si ordi 1 ou ordi 2
en fonction, la cellule A1 contiendra 1 ou 2

et ensuite, en début de chaque macro qui utilise des noms, je place ce code :

VB:
choixordi.Show
'c'est le usforme que j'ai adapté

Dim CheminCPTA As String, CheminFACT As String, CheminCLIENT As String, fichierCPTA As String, fichierFACT As String, fichierCLIENT As String

fichierCPTA = [fichierCPTA]
fichierFACT = [fichierFACT]
fichierCLIENT = [fichierCLIENT]

If Range("a1") = 1 Then
CheminCPTA = [N_cheminCPTA]
CheminFACT = [N_cheminFACT]
CheminCLIENT = [N_cheminCLIENT]
        Else
CheminCPTA = [O_cheminCPTA]
CheminFACT = [O_cheminFACT]
CheminCLIENT = [O_cheminCLIENT]
        End If
    Workbooks.Open Filename:=CheminCLIENT & fichierCLIENT
    Workbooks.Open Filename:=CheminCPTA & fichierCPTA
    
'le reste du code suit mais est sans importance pour ce problème'

ce 2ème code est répété a chaque début de macro ( sauf choixordi.Show)
si tu vois un moyen d’alléger, je suis preneur
Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…