Microsoft 365 [Résolu]VBA: encoder un chemin de sauvegarde OneDrive utilisable depuis plusieurs appareils

Jean-Mi

XLDnaute Nouveau
Bonjour

Jusqu'à présent, j'ai pu créer des macros qui ouvrent ou sauvent des classeurs depuis ou sur OneDrive en indiquant un chemin de type C:\Users\NomUtilisateur\NomDuOneDrive
Cependant, lorsqu'un utilisateur utilise plusieurs appareils ou si plusieurs utilisateurs doivent utiliser cette macro, le chemin est différent pour chacun.

Je ne sais pas comment gérer cette situation efficacement.

Je suis donc intéressé de connaître vos avis/astuces/solutions.

Merci d'avance,

Jean-Mi
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Jean-Mi,
Une idée put être farfelue :
Rechercher à partir de C:\Users si une partition contient OneDrive, avec une fonction :
VB:
Function OuEstOneDrive(DossierDeTete$, Idx%)
    Dim fso As Object, Dossier As Object
    Dim sousRep As Object, Flder As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Dossier = fso.GetFolder(DossierDeTete)
    For Each Flder In Dossier.subfolders
        tablo = Split(Flder.Path, "\")
        For L = 0 To UBound(tablo)
            If LCase(tablo(L)) Like "*onedrive*" Then
                 Idx = Idx + 1
                OuEstOneDrive = Flder.Path & "\"
                Exit Function
            End If
        Next L
    Next
    For Each sousRep In Dossier.subfolders
        T = OuEstOneDrive(sousRep.Path, Idx)
        If T <> "" Then
            OuEstOneDrive = T
            Exit Function
        End If
    Next sousRep
    Set fso = Nothing
    Set fso = Nothing
End Function
pour le test :
Code:
Sub test()
  X = OuEstOneDrive("C:\Users\", 0)
  MsgBox X
End Sub
Mais cela suppose que cette partition contienne au moins onedrive.
Le msgbox donne le chemin de ce OneDrive.
 

Jean-Mi

XLDnaute Nouveau
Waw, je serais incapable de rédiger ce type de code!
J'ai testé une autre solution de mon côté.
J'ai placé un classeur dans le dossier qui m'intéresse sur OneDrive et j'ai récupéré le chemin grâce à activeworkbook.path et j'ai pu constater que l'adresse sharepoint obtenue peut être placée dans le code pour l'enregistrement

Ce que je vais tester: au lancement de la macro, enregistrer le chemin dans une variable et l'utiliser lorsque je voudrai demander d'ouvrir automatiquement un autre document se trouvant dans le même dossier et avec lequel la macro doit interagir.

Je vous tiendrai au courant.
 

Jean-Mi

XLDnaute Nouveau
Voici donc ce que j'ai mis en place.
Je ne mets pas le chemin d'accès "en dur" depuis C: puisqu'il sera différent en fonction de l'appareil utilisé.
Je le rends donc dynamique en procédant de la sorte:
VB:
Dim Chemin As String
Chemin = ActiveWorkbook.Path & "\"
J'ai pu valider cette solution en testant depuis 2 appareils distincts :)

Merci à Sylvanu d'avoir proposé une solution!
 

Statistiques des forums

Discussions
312 047
Messages
2 084 863
Membres
102 688
dernier inscrit
Biquet78