Microsoft 365 Gestion des liens d'enregistrement

julien1982

XLDnaute Occasionnel
Bonjour a toutes et tous,

je vais essayer d’être clair dans mon explication et mon problème.
Je possède un fichier de gestion et création de bordereaux d'envoi qui fonctionnait parfaitement lorsque l'on travaillait en local.
Depuis peu, nous sommes passer sur office 365 avec sharepoint.

Depuis ce jour, mes macro ne fonctionnent pas correctement notamment la macro 'publier' situer dans l'onglet "Bordereau Destinataire' du fichier joint.

Cette macro me permettait de faire une copie des onglets "Bordereau Destinataire" et "Bordereau AR" dans le chemin enregistré et écrit en cellule C de l'onglet "Liste Chemins". Du moment ou nous sommes passer à Sharepoint, impossible de faire marcher cette macro pour qu'elle m'enregistre mes fichiers au bon endroit car les chemins sont différents suivant qui utilise le fichier. Par exemple, si je l'utilise sur mon PC portable j'aurai comme chemin:

C:\Users\dessin\chemin de destination....

hors si je le fais depuis mon PC fixe au bureau j'aurai le chemin suivant:

C:\Users\Julien Verdier\chemin de destination...

Seule la partie rouge du chemin est différente, tout le reste après est identique.

Du coup n'ayant pas le même nom d'utilisateur cela ne marche plus....

j’espère avoir été clair, si besoin je referai plus détaillé.

Je suis preneur si quelqu'un a une solution quitte à reprendre tout le code c'est pas un soucis.

merci par avance.
 

Phil69970

XLDnaute Barbatruc
Bonjour Julien

Je te propose un test copie ce code VBA et dans une feuille vierge que tu nommes "Feuille Test" regarde le résultat :
1) Avec ton portable
2) Avec ton PC fixe
Tu devrais voir le chemin qui va bien ..... (regarde surtout en A6 et A7) ;)

VB:
Sub Test()
Sheets("Feuille Test").[A1] = Environ("ALLUSERSPROFILE")
Sheets("Feuille Test").[A2] = Environ("APPDATA")
Sheets("Feuille Test").[A3] = Environ("FPS_BROWSER_USER_PROFILE_STRING")
Sheets("Feuille Test").[A4] = Environ("HOMEPATH")
Sheets("Feuille Test").[A5] = Environ("LOCALAPPDATA")
Sheets("Feuille Test").[A6] = Environ("OneDrive")
Sheets("Feuille Test").[A7] = Environ("OneDriveConsumer")
Sheets("Feuille Test").[A8] = Environ("PUBLIC")
Sheets("Feuille Test").[A9] = Environ("USERDOMAIN")
Sheets("Feuille Test").[A10] = Environ("USERDOMAIN_ROAMINGPROFILE")
Sheets("Feuille Test").[A11] = Environ("USERNAME")
Sheets("Feuille Test").[A12] = Environ("USERPROFILE")
End Sub

Merci de ton retour
 

julien1982

XLDnaute Occasionnel
Bonjour Julien

Je te propose un test copie ce code VBA et dans une feuille vierge que tu nommes "Feuille Test" regarde le résultat :
1) Avec ton portable
2) Avec ton PC fixe
Tu devrais voir le chemin qui va bien ..... (regarde surtout en A6 et A7) ;)

VB:
Sub Test()
Sheets("Feuille Test").[A1] = Environ("ALLUSERSPROFILE")
Sheets("Feuille Test").[A2] = Environ("APPDATA")
Sheets("Feuille Test").[A3] = Environ("FPS_BROWSER_USER_PROFILE_STRING")
Sheets("Feuille Test").[A4] = Environ("HOMEPATH")
Sheets("Feuille Test").[A5] = Environ("LOCALAPPDATA")
Sheets("Feuille Test").[A6] = Environ("OneDrive")
Sheets("Feuille Test").[A7] = Environ("OneDriveConsumer")
Sheets("Feuille Test").[A8] = Environ("PUBLIC")
Sheets("Feuille Test").[A9] = Environ("USERDOMAIN")
Sheets("Feuille Test").[A10] = Environ("USERDOMAIN_ROAMINGPROFILE")
Sheets("Feuille Test").[A11] = Environ("USERNAME")
Sheets("Feuille Test").[A12] = Environ("USERPROFILE")
End Sub

Merci de ton retour
Slt Phil69970,

merci pour ton retour.

ci joint une capture du retour de la macro

1708586935330.png


Mais du coup je ne sais quoi en faire 😅
 

Phil69970

XLDnaute Barbatruc
Julien

C'est l'image avec ton portable à priori il manque l'autre image !!
Tu dois avoir 2 listes
1) Avec ton portable
2) Avec ton PC fixe

L'idée est de regarder le chemin affiché avec les 2 ordinateurs chez toi. (A priori A4, A6, A11 et/ou A12 est une bonne piste )
Si mon idée se confirmes tu remplaces par le chemin générique......environ ("....") qui va bien .... ;)
Je m'absente toute la journée je regarderai à mon retour si tu as mis les 2 listes
 
Dernière édition:

julien1982

XLDnaute Occasionnel
Julien

C'est l'image avec ton portable à priori il manque l'autre image !!
Tu dois avoir 2 listes


L'idée est de regarder le chemin affiché avec les 2 ordinateurs chez toi. (A priori A4, A6, A11 et/ou A12 est une bonne piste )
Si mon idée se confirmes tu remplaces par le chemin générique......environ ("....") qui va bien .... ;)
Je m'absente toute la journée je regarderai à mon retour si tu as mis les 2 listes
Ah OK. je regarderai ça quand je serai au boulot aussi ce soir ou demain. Au pire lundi.
 

julien1982

XLDnaute Occasionnel
Julien

C'est l'image avec ton portable à priori il manque l'autre image !!
Tu dois avoir 2 listes


L'idée est de regarder le chemin affiché avec les 2 ordinateurs chez toi. (A priori A4, A6, A11 et/ou A12 est une bonne piste )
Si mon idée se confirmes tu remplaces par le chemin générique......environ ("....") qui va bien .... ;)
Je m'absente toute la journée je regarderai à mon retour si tu as mis les 2 listes
Re salut,

désolé du retard petit soucis privé donc pas eu le temps de regarder avant.
ci joint la sortie a partir de mon pc fixe
1709052006746.png


Du coup cela signifie que je dois modifier quoi dans mes lignes de codes?

1709114864919.png
 
Dernière édition:

julien1982

XLDnaute Occasionnel
Bonjour Julien

Je te propose pour avoir ceci


ou bien cela


De faire :


Ce qui devrait te donner le bon chemin selon ou tu te trouves ... ;)

Merci de ton rtour
Slt,

merci pour ton retour.

je viens de faire cette modif pour le chemin par défaut.

1709122329468.png

Maintenant il me reste juste a modifier la variable chemin si je comprend bien...qui lui va chercher la cellule F2 dans la feuille "Liste Chemins"
 

julien1982

XLDnaute Occasionnel
Bonjour Julien

Pas sur que cela fonctionne avec ce que tu as fait car tu as 2 fois de suite "\" dans ton chemin o_O
Avec une image c'est pas trop facile de te répondre car il faut tout recopier à la main !!! 🤔
effectivement j'aais pas fait gafe au double "\".

Ci dessous le code en clair ca sera plus simple évidement....
J’aurai bien donné le fichier également mais il est trop volumineux...

Sub Bouton_Publier_Click()
ActiveWorkbook.Save
Dim CheminDefaut, CheminEnr, Fichier As String

'CheminDefaut = "C:\Users\Julien Verdier\Documents\_DATA\05_Gestion BE\60-Bordereaux"
CheminDefaut = Environ("USERPROFILE") & "\_DATA\05_Gestion BE\60-Bordereaux"
Fichier = Cells(8, 4).Value

CheminEnr = Worksheets("Listes Chemins").Range("F2").Value 'on vient chercher le chemin inscrit dans la cellule F2 de l'onglet "Liste Chemins" (formule ecrivant le chemin complet d'enregistrement
If Worksheets("Listes Chemins").Range("F2").Value <> "" Then
If Dir(CheminEnr, vbDirectory) = "" Then
MsgBox "Chemin Non Trouvé --" & vbCr & CheminEnr & vbCr & "Reprise du chemin par defaut --" & vbCr & CheminDefaut
CheminEnr = CheminDefaut
Else
MsgBox " Enregistrement fait sur" & vbCr & CheminEnr
End If
Else
MsgBox "Pas de Chemin enregistré" & vbCr & "Reprise du chemin par defaut " & CheminDefaut
CheminEnr = CheminDefaut
End If



ActiveSheet.Unprotect
Sheets("Bordereau Destinataire").Select
ActiveSheet.Shapes("1 - Publier").Select
Selection.Delete


'-------------------------------------------------------------------------------------------------------------
'enregistrement du bordereau au bon endroit
ActiveWorkbook.SaveAs Filename:=CheminEnr & "\" & Fichier & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
'ActiveWorkbook.SaveAs Filename:=CheminEnr & "\" & Fichier & ".xlsm", FileFormat _
' :=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
' False, CreateBackup:=False

'on déprotège la feuille
ActiveSheet.Unprotect

'on supprime les liens en remplaçant les formules par les valeurs de cellules
ActiveSheet.Cells(6, 4) = ActiveSheet.Cells(6, 4).Value
ActiveSheet.Cells(7, 9) = ActiveSheet.Cells(7, 9).Value
ActiveSheet.Cells(11, 8) = ActiveSheet.Cells(11, 8).Value

'on protège la feuille
ActiveSheet.Protect

' ActiveWorkbook.BreakLink Name:= _
' "G:\Bordereaux\Gestion des Bordereaux\Gestion des Bordereaux001.xlsm", _
' Type:=xlLinkTypeExcelLinks

'on enregistre la feuille
ActiveWorkbook.Save


End Sub
 

julien1982

XLDnaute Occasionnel
Bonjour,

Pour que ton code soit un peu plus lisible sur le forum, tu peux utiliser la balise code.
Et avec le paramètre vb ce sera encore mieux. 😉
Effectivmeent cela sera moins degueu ;)
dsl pour la saleté precedente :)

VB:
Sub Bouton_Publier_Click()
ActiveWorkbook.Save
Dim CheminDefaut, CheminEnr, Fichier As String

'CheminDefaut = "C:\Users\Julien Verdier\Documents\_DATA\05_Gestion BE\60-Bordereaux"
CheminDefaut = Environ("USERPROFILE") & "\_DATA\05_Gestion BE\60-Bordereaux"
Fichier = Cells(8, 4).Value

CheminEnr = Worksheets("Listes Chemins").Range("F2").Value 'on vient chercher le chemin inscrit dans la cellule F2 de l'onglet "Liste Chemins" (formule ecrivant le chemin complet d'enregistrement
If Worksheets("Listes Chemins").Range("F2").Value <> "" Then
If Dir(CheminEnr, vbDirectory) = "" Then
MsgBox "Chemin Non Trouvé --" & vbCr & CheminEnr & vbCr & "Reprise du chemin par defaut --" & vbCr & CheminDefaut
CheminEnr = CheminDefaut
Else
MsgBox " Enregistrement fait sur" & vbCr & CheminEnr
End If
Else
MsgBox "Pas de Chemin enregistré" & vbCr & "Reprise du chemin par defaut " & CheminDefaut
CheminEnr = CheminDefaut
End If



ActiveSheet.Unprotect
Sheets("Bordereau Destinataire").Select
ActiveSheet.Shapes("1 - Publier").Select
Selection.Delete


'-------------------------------------------------------------------------------------------------------------
'enregistrement du bordereau au bon endroit
ActiveWorkbook.SaveAs Filename:=CheminEnr & "\" & Fichier & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
'ActiveWorkbook.SaveAs Filename:=CheminEnr & "\" & Fichier & ".xlsm", FileFormat _
' :=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
' False, CreateBackup:=False

'on déprotège la feuille
ActiveSheet.Unprotect

'on supprime les liens en remplaçant les formules par les valeurs de cellules
ActiveSheet.Cells(6, 4) = ActiveSheet.Cells(6, 4).Value
ActiveSheet.Cells(7, 9) = ActiveSheet.Cells(7, 9).Value
ActiveSheet.Cells(11, 8) = ActiveSheet.Cells(11, 8).Value

'on protège la feuille
ActiveSheet.Protect

' ActiveWorkbook.BreakLink Name:= _
' "G:\Bordereaux\Gestion des Bordereaux\Gestion des Bordereaux001.xlsm", _
' Type:=xlLinkTypeExcelLinks

'on enregistre la feuille
ActiveWorkbook.Save


End Sub
 

Phil69970

XLDnaute Barbatruc
Bonjour Julien et TFB

A priori ceci devrait être correct
Sub Bouton_Publier_Click()
ActiveWorkbook.Save
Dim CheminDefaut, CheminEnr, Fichier As String

'CheminDefaut = "C:\Users\Julien Verdier\Documents\_DATA\05_Gestion BE\60-Bordereaux"
'CheminDefaut = Environ("USERPROFILE") & "\_DATA\05_Gestion BE\60-Bordereaux"
CheminDefaut = Environ("USERPROFILE") & "\" & "Documents\_DATA\05_Gestion BE\60-Bordereaux"
Fichier = Cells(8, 4).Value

Par contre il est possible d'avoir un PB ici mais il faudrait savoir ce qu'il y a dans la cellule F2

CheminEnr = Worksheets("Listes Chemins").Range("F2").Value 'on vient chercher le chemin inscrit dans la cellule F2 de l'onglet "Liste Chemins" (formule ecrivant le chemin complet d'enregistrement
 

julien1982

XLDnaute Occasionnel
Bonjour Julien et TFB

A priori ceci devrait être correct


Par contre il est possible d'avoir un PB ici mais il faudrait savoir ce qu'il y a dans la cellule F2
Bonjour Phil, merci pour la correction apportée.

ci joint un extrait du fichier car je n'arrive pas le mettre entier car trop volumineux apparemment.
Mais il y aura la formule dan la cellule F2.
 

Pièces jointes

  • Extrait fichier.xlsx
    22.4 KB · Affichages: 2

Discussions similaires

Réponses
2
Affichages
2 K
Réponses
7
Affichages
700

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 677
dernier inscrit
Justine11