Microsoft 365 [Saveas] dans un environnement Onedrive

Mjgreg67

XLDnaute Junior
Bonjour le forum,

Je vous souhaite à tous une belle année 2023 ! Puisse-t-elle être remplie de magnifiques codes VBA :D

Je me permets de poster ce sujet car je rencontre depuis plusieurs jours un soucis dont je n'arrive pas à trouver la solution.

Le service IT de la société dans laquelle je travaille actuellement à fait passer tous les postes sous Office 365 et le bureau des postes est directement synchronisé avec Onedrive.

Ce qui pose un soucis, non négligeable, concernant l'un de mes principale code VBA. Pour faire simple j'ai un fichier Excel dans lequel j'ai une base de données. A partir de celle-ci un email automatique avec fichier Excel Macro en PJ est envoyé à chaque adresse email précisée. Environ 400 emails sont envoyés via cette méthode. Dans ce fichier Excel l'utilisateur devra compléter un formulaire puis cliquer sur un bouton "Finaliser". Ce qui va automatiquement enregistrer son fichier Excel puis ouvrir Outlook avec ce fichier en PJ complété et me le renvoyer.

Tout fonctionnait parfaitement mais depuis que le bureau est synchronisé Onedrive le code plante au moment d'effectuer un saveas. En effet j'utilise le code suivant :

'ENREGISTRER COPY DU DOCUMENT
Dossier_Database = "DOC FORMULAIRE"
Dossier_Date = Format(CDate(Date), "yyyymmdd")
Fichier_Nom = Feuil1.Range("C7").Value & " - " & Feuil1.Range("C6").Value & ".xlsm"
Chemin = ThisWorkbook.Path
'Vérification que le chemin existe sinon on créé les dossiers en question
If Dir(Chemin & "\" & Dossier_Database, 16) = "" Then MkDir Chemin & "\" & Dossier_Database
If Dir(Chemin & "\" & Dossier_Database & "\" & Dossier_Date, 16) = "" Then MkDir Chemin & "\" & Dossier_Database & "\" & Dossier_Date
ThisWorkbook.SaveCopyAs Chemin & "\" & Dossier_Database & "\" & Dossier_Date & "\" & Fichier_Nom
Le code plante à cause de ma variable "Chemin = Thisworkbook.path". Cet élément me donnait jusqu'à présent le chemin informatique du fichier mais depuis que nous sommes passé sous Onedrive ce chemin informatique s'est transformé en adresse internet... Du coup le code plante au moment d'effectuer le saveas.

Je me suis cresé la tête des heures entières... Impossible d'arriver à choper le chemin informatique alors que ce dernier existe. Via .path, Excel chope l'adresse internet de Onedrive et non le chemin informatique...

Quelqu'un peut-il m'aider ? Comment faire pour forcer le chemin informatique ?

Merci beaucoup !
 

Deadpool_CC

XLDnaute Accro
Avez-vous essayé Environ$("OneDrive") ?
Qui donne le répertoire OneDrive sur la machine utilisateur où doit se trouver votre fichier.
Bonjour,

j'allais vous orienter sur la même chose : assurez vous que vous ouvrez bien le fichier local dans votre répertoire onedrive sur l'ordi. et pas le fichier distant sur les serveur de Microsoft.
Ps : s'il le faut => forcer One drive à avoir une copie local en décochant (dans les paramètres oneDrive) l'option de libération de l'espace disque sur le PC
1672758562611.png
 

Mjgreg67

XLDnaute Junior
Bonjour !
Merci beaucoup pour vos retours.
Je vous réponds respectivement :

@Hasco : Je ne connaissais pas Environ$("OneDrive") ! Demain je retourne au travail et je vais le tester. Donc selon vous Environ$("OneDrive") me permettra de retrouver mon chemin informatique c'est bien cela ?

@Deadpool_CC : La solution semble intéressante néanmoins il ne faut pas oublié que le fichier sera distribué à des centaines de personnes automatiquement. L'objectif est que ces dernières ai le moins de choses à faire. Pour certaines d'entres elles c'est la seule fois qu'elles ont à allumer un PC... Donc elles ne sont pas trop à l'aise avec les clics droits / gauches etc.

Je vous tiens au jus demain merci ! :)
 

p56

XLDnaute Occasionnel
Bonsoir à tous,

Pour l'occasion, je me permets de proposer ma fonction OneDrivePath ci-joint en .txt (si ça peut être utile)

Cette fonction permet de pouvoir indifféremment utiliser un même fichier sur un disque dur et/ou sur OneDrive, quelque soit l'emplacement dans OneDrive, sans plus se soucier de rien.

Pour l'utiliser, il suffit de remplacer tous les ThisWorkbook.Path de votre projet par OneDrivePath, puis de copier/coller le contenu du .txt dans votre projet.

P.

Edit du 4 janv 16:41 : amélioration du code
 

Pièces jointes

  • OneDrivePath_2023.txt
    545 bytes · Affichages: 32
Dernière édition:

Discussions similaires