Enregistrement automatique d'un fichier dans One Drive

Bonjour,

Je suis sur Excel 2019 et Windows 11.

En cliquant sur un bouton macro de mon fichier, je souhaite l'enregistrer au nom de la donnée saisie en cellule G1 (cells(1,7)).
Mais le code ci-dessous ne fonctionne pas...j'ai vérifié, le chemin dans OneDrive est le bon...
Je débute su OneDrive et je ne sais pas comment adapter le code.
Pouvez-vous m'aider ?

Sub Bouton_enregistrer()

Dim Fichier As String

Fichier = "C:\Users\carol\OneDrive\Mes fichiers\Macro Excel\" & Cells(1, 7).Value & ".xls"

ThisWorkbook.SaveAs Fichier

End Sub

Le message d'erreur que j'obtiens :

message d erreur

Salutations,

Dadams

Bonsoir,

à tout hasard, essayez comme ça ;

Sub Bouton_enregistrer()

Application.EnableEvents = False

ThisWorkbook.SaveAs Filename:="C:\Users\carol\OneDrive\Mes fichiers\Macro Excel\" & Cells(1, 7).Value & ".xls"

Application.EnableEvents = True

End Sub

Bonjour Doux Rêveur,

Merci pour votre retour.

Cependant cela ne fonctionne pas, même message d'erreur.

J'ai essayé une variable "OneDrive" comme ci-dessous mais autre message d'erreur :

Sub Bouton_enregistrer()

Dim Fichier As String
Dim CheminOneDrive As String

    'Récupère le chemin OneDrive depuis l'environnement Windows
CheminOneDrive = Environ("OneDrive")

Fichier = CheminOneDrive & "C:\Users\carol\OneDrive\Mes fichiers\Macros Excel\" & Cells(1, 7).Value & ".xls"
ThisWorkbook.SaveAs Fichier

End Sub
message d erreur2

Si vous voyer comment je peux avancer...

Bonne journée,

Dadams

Bonjour tous,

@Damdam, l'instruction donnée pour le chemin est une GROSSE erreur

CheminOneDrive = Environ("OneDrive")
Fichier = CheminOneDrive & "C:\Users\carol\OneDrive\Mes fichiers\Macros Excel\" & Cells(1, 7).Value & ".xls"
' Donne la valeur dans le fenêtre d'exécution
Debug.Print Fichie

En effet la variable CheminOneDrive contient déjà la valeur "C:\Users\carol\OneDrive"

Si le dossier "Mes fichiers" et sous dossier "Macros Excel" existent bien dans le dossier OneDrive, Il faut donc mettre

CheminOneDrive = Environ("OneDrive")
Fichier = CheminOneDrive & "\Mes fichiers\Macros Excel\" & Cells(1, 7).Value & ".xls"

A+

Bonjour JExcel2fr,

Merci pour votre réponse.

J'ai modifié le code comme indiqué mais un autre message d'erreur apparait :

message d erreur 2

Pourtant le chemin semble bon : ce que j'ai comme chemin dans OneDrive pour enregistrer mon fichier :

chemin d acces

Et le fichier n'est pas utilisé ailleurs, ni doublon de nom.

Voyez-vous la solution ?

Salutations,

Dadams

Re,

Le nom du fichier ne semble pas être le bon "77C30A00" c'est un nom de fichier temporaire et il n'a pas d'extension ".xls"

A+

Bonjour,

par curiosité j'ai interrogé une IA pour votre souci, elle propose plusieurs choses ;

1) vu qu'il y a une macro, bien spécifier l'extension xlsm ;

Fichier = "C:\Users\carol\OneDrive\Mes fichiers\Macro Excel\" & Cells(1, 7).Value & ".xlsm"

Éventuellement rajouter cette ligne juste en-dessous pour forcer le format ;

ThisWorkbook.SaveAs Filename:=Fichier, FileFormat:=52

2) sauver d'abord sur votre pc le fichier avec le même code pour voir s'il fonctionne, du genre ;

Fichier = "C:\Temp\" & Cells(1, 7).Value & ".xlsm"

Si oui mais que ça ne va pas sur OneDrive, c'est que le chemin d'accès est en réalité plus complexe ou qu'il y a un blocage sur OneDrive. Il faut alors ;

-Aller dans les paramètres de l'application OneDrive (l'icône de nuage près de l'horloge).
-Aller dans l'onglet Office.
-Décocher l'option "Utiliser les applications Office pour synchroniser les fichiers Office que j'ouvre" (ou "Collaborer sur des fichiers...").

3) vérifier qu'il n'y a pas de caractères interdits dans la cellule G1 ( \ / : * ? " < > | ) ni de retour à la ligne.

Salut Doux Rêveur,

Désolé, mais je ne suis pas d'accord avec toi

1) vu qu'il y a une macro, bien spécifier l'extension xlsm ;

Le format ".xls" classeur Excel 97-2003 prend en charge les macros

En revanche, il peut y avoir des caractères interdits dans la cellule, avec une petite fonction, le problème peut être vite résolu

Function NormalisationNomFichier(sVal As String)
  With CreateObject("VBScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "[\\/:*?""<>|]"
    NormalisationNomFichier = .Replace(sVal, "")
  End With
End Function

Du coup la ligne devient

Fichier = CheminOneDrive & "\Mes fichiers\Macros Excel\" & NormalisationNomFichier(Cells(1, 7)) & ".xls"

A+

Bonjour Doux Rêveur,

J'ai suivi vos recommandations mais l'option "Utiliser les applications Office pour synchroniser les fichiers Office que j'ouvre" n'existe plus dans la version courante de OneDrive.
Donc je n'ai pas pu résoudre le problème et le message suivant apparait :

message d erreur3

Décidément les macros ne sont pas faites pour OneDrive, il y a probablement une solution mais pas simple. Je continue mes recherches, également avec l'IA.
Si vous souhaiter continuer à travailler sur ce problème, vous pouvez faire l'essai vous même sur OneDrive (5Go sont disponibles gratuitement par défaut pour tous le monde).

Bonjour JExcel2fr,
J'ai bien pris note de la fonction pour s'affranchir des caractères interdits dans la cellule.

Salutations,

Dadams

Ok , et ce code permet-il de sauver le fichier sur votre pc, pour voir si le souci vient bien de OneDrive ?

Re,

@Doux Rêveur

Ok , et ce code permet-il de sauver le fichier sur votre pc, pour voir si le souci vient bien de OneDrive ?

Bonne question

@Damdams51, que retourne ?

CheminOneDrive = Environ("OneDrive")
MsgBox CheminOneDrive

Sinon, j'ai bien tester ce code et il fonctionne parfaitement chez moi

Sub Bouton_enregistrer()
  Dim Fichier As String
  Dim CheminOneDrive As String
  'Récupère le chemin OneDrive depuis l'environnement Windows
  CheminOneDrive = Environ("OneDrive")
  MsgBox "Le chemin OneDrive est : " & CheminOneDrive
  ' Chemin et nom du fichier
  Fichier = CheminOneDrive & "\Documents\Fichiers Excel\" & NormalisationNomFichier(Cells(1, 7)) & ".xls"
  ThisWorkbook.SaveAs Fichier
End Sub

Function NormalisationNomFichier(sVal As String)
  With CreateObject("VBScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "[\\/:*?""<>|]"
    NormalisationNomFichier = .Replace(sVal, "")
  End With
End Function

Pour tester, la valeur de ma cellule G1 a été : Damdams51, puis Damdam51a

JExcel,

J'ai copié/collé votre code (en modifiant mon chemin) mais ça ne marche toujours pas, message :

message d erreur4

Je suis sur Windows 10 (et oui, pour quelques mois encore) et Excel 2019.
Quelles sont vos versions ?

Doux Rêveur, oui ça fonctionne hors OneDrive.

Salutations,

Dadams

Re,

Pour moi, je pense que comme le fichier est ouvert depuis votre OneDrive
Ca génère un fichier temporaire, dans la dernière copie "557S8C70"

Peut-être essayé en dernier ressort, de remplacer la ligne

ThisWorkbook.SaveAs Fichier

Par

ThisWorkbook.SaveCopyAs Fichier

Bonne soirée

Hello,

je m'immisce, JExceLfr vous à demandé

@Damdams51, que retourne ?

CheminOneDrive = Environ("OneDrive")

MsgBox CheminOneDrive

Je plussois et vous donne la procédure à copier/coller dans un module et à lancer

Sub Chemin
CheminOneDrive = Environ("OneDrive")
MsgBox CheminOneDrive & vbCrLf & Cells(1, 7).Value
Debug.Print CheminOneDrive
End Sub

Copier/coller ce qui sera affiché (dans la fenêtre d'exécution) ou l'image de la boite de dialogue

je pense que tant qu'on aura pas cette info le reste est hypothétique

Rechercher des sujets similaires à "enregistrement automatique fichier one drive"