Macro ne fonctionne pas sur d'autres PC - Nom lecteur réseau différent
Bonjour à tous,
Je rencontre actuellement un problème car les macros ne fonctionnent que sur mon PC.
Je pense que cela provient du chemin d'accès car sur mon PC je suis sur le lecteur Z et sur celui de mon responsable, il s'agit du lecteur Y.
Le nom de nos deux lecteurs est identique --> \\SRV-DC-FILES
J'ai ainsi remplacé le Z par le "vrai" nom du lecteur mais cela ne fonctionne pas, même sur mon PC la macro ne fonctionne plus
Set WB = Workbooks.Open("Z:\Partage Cdg\1. Budgets\2026\ etc..
Set WB = Workbooks.Open("\\SRV-DC-FILES\Partage Cdg\1. Budgets\2026\etc..
Que dois-je modifier ? Auriez-vous une solution à me proposer ?
Je vous remercie par avance,
Très bonne journée à vous,
Bonjour,
Perso, je travaille beaucoup par macros complémentaires avec mes clients. Lors de l'envoi d'une mise à jour, les utilisateurs chargent un fichier de paramètres propre au site dans un onglet de paramètres contenant des zones nommées. Dans ces zones nommées, on retrouve justement les adresses des différents répertoires.
Sans aller jusque là, les différents chemins dont vous vous servez pourraient être collectés dans des zones nommées. Le soucis sera de mettre à jour pour chaque utilisateur chaque fois qu'il voudra utiliser une macro. D'où l'utilité de séparer les macros, des données dans une macro complémentaire.
Il y a peut-être une solution intermédiaire en testant le user utilisateur qui indiquera implicitement les différents répertoires.
Bonjour Eric,
Je vous remercie pour votre retour, je vais tenter d'utiliser votre technique :)
Bonjour,
De mon côté j'utilise une macro pour enregistrer le chemin de l'utilisateur, macro très utile parce qu'on utilise M365 et SharePoint.
Le principe : il ne faut avoir qu'un seul explorateur de fichier ouvert, la macro va capter le nom de l'utilisateur et l'adresse de cet explorateur pour les enregistrer dans une feuille de votre classeur. La feuille sera cachée pour l'esthétisme.
Si cela peut vous servir...
Public CheminExplorateur As String
Sub GetCheminExplorateur()
Dim ShellApp As Object
Dim Window As Object
' Créer un objet Shell.Application
Set ShellApp = CreateObject("Shell.Application")
' Obtenir la fenêtre active
For Each Window In ShellApp.Windows
If Window Is ShellApp.Windows.Item(ShellApp.Windows.Count - 1) Then
Exit For
End If
Next Window
' Obtenir le chemin du dossier actif dans l'explorateur de fichiers
On Error Resume Next
CheminExplorateur = Window.Document.Folder.Self.Path & "\"
On Error GoTo 0
' Si le chemin est vide, afficher une boîte de message
If CheminExplorateur = "" Then
MsgBox "Chemin non détecté"
End If
Set ShellApp = Nothing
End Sub
'Macro pour enregistrer le user et son chemin local
Sub Rec_Utilisateur_CheminLocal()
Application.ScreenUpdating = False
' Définir le nom de l'utilisateur et l'emplacement du fichier
Dim NomUtilisateur As String
Dim EmplacementFichier As String
Dim etatInitial As Variant
Dim Mononglet As String
'on active ou créé l'onglet qui va gérer les users et chemins d'accès
Call Verifier_Ou_Creer_Onglet_Users
Call GetCheminExplorateur
NomUtilisateur = Environ$("username") ' Obtenir le nom de l'utilisateur
EmplacementFichier = CheminExplorateur ' Obtenir l'emplacement du fichier
Debug.Print EmplacementFichier
' Trouver si l'utilisateur existe déjà
Dim RangeUtilisateur As Range
Set RangeUtilisateur = Columns("A:A").Find(What:=NomUtilisateur, LookIn:=xlValues, LookAt:=xlWhole)
' Si l'utilisateur existe, mettre à jour l'emplacement du fichier
If Not RangeUtilisateur Is Nothing Then
Cells(RangeUtilisateur.Row, 2).Value = EmplacementFichier
Else
' Sinon, ajouter un nouvel enregistrement
Dim DerniereLigne As Long
DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(DerniereLigne, 1).Value = NomUtilisateur
Cells(DerniereLigne, 2).Value = EmplacementFichier
End If
'On masque l'onglet
ActiveSheet.Visible = xlSheetHidden
Application.ScreenUpdating = True
End Sub
'Macro pour trouver le chemin dans le tableau. Ce chemin sert à l'enregistrement
Function Trouver_Chemin() As Variant
' Définir le nom de l'utilisateur
Dim NomUtilisateur As String
NomUtilisateur = Environ$("username") ' Obtenir le nom de l'utilisateur
Call Verifier_Ou_Creer_Onglet_Users
' Trouver l'utilisateur dans la colonne A
Dim RangeUtilisateur As Range
Set RangeUtilisateur = Columns("A:A").Find(What:=NomUtilisateur, LookIn:=xlValues, LookAt:=xlWhole)
' Si l'utilisateur est trouvé, obtenir le résultat correspondant dans la colonne B
If Not RangeUtilisateur Is Nothing Then
Dim Resultat As String
Resultat = Cells(RangeUtilisateur.Row, 2).Value
Trouver_Chemin = Resultat ' Retourner le résultat
Else
MsgBox "L'utilisateur " & NomUtilisateur & " n'a pas été trouvé."
Trouver_Chemin = "" ' Retourner une chaîne vide si l'utilisateur n'est pas trouvé
End If
'On masque l'onglet
ActiveSheet.Visible = xlSheetHidden
End Function
'Macro pour créer et rendre visible la feuille comportant les users et chemins d'accès
Sub Verifier_Ou_Creer_Onglet_Users()
Dim Feuille As Worksheet
Dim NomFeuille As String
NomFeuille = "Chemin local par users"
On Error Resume Next ' Ignorer l'erreur si la feuille n'existe pas
Set Feuille = ThisWorkbook.Sheets(NomFeuille)
On Error GoTo 0 ' Rétablir le comportement normal en cas d'erreur
If Feuille Is Nothing Then
' Si la feuille n'existe pas, la créer
Set Feuille = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
Feuille.Name = NomFeuille
End If
' Activer la feuille
ThisWorkbook.Sheets(NomFeuille).Visible = True
Sheets("Chemin local par users").Visible = True
Worksheets(NomFeuille).Select
End Sub