Enregistrement Dossier OneDrive Hors Ligne

Bonjour,

J'utilise VBA pour créer des copies (excel et PDF) d'un document excel. J'enregistre les copies ici: "C:\Users\XXX\OneDrive" afin de pouvoir enregistrer le document lorsque je suis connecté ou non à mon compte 365. Le dossier est ensuite actualisé et disponible sur tout mes appareils.

Quand je suis en connecté tout marche très bien, par contre lorsque je ne suis pas connecté j'obtiens une erreur 1004: La méthode 'SaveAs' de l'objet 'Workbook' a échoué. A ce moment mon code s'arrête. Quand je vais vérifier dans le dossier où j'enregistre mes copies, elles sont bien présentes.

Le problème est donc que j'ai un message d'erreur qui arrête le code VBA alors que les documents s'enregistre correctement.

L'erreur est sur la ligne:

ActiveWorkbook.SaveAs Filename:=Fname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

(Fname="C:\Users\XXX\OneDrive\YYY\ZZZ.xlsm")

J'ai fait des recherches sur internet sans succès afin de comprendre ce qui se passe lorsque je n'ai plus de connection internet.

Est ce que vous savez ou est mon erreur ou quelles peuvent être les limitations de la fonction SaveAs avec OneDrive et comment je peux résoudre mon problème.

Merci

Bonjour szatos et bienvenue

Peut-être une solution de contournement

On Error Resume Next
ActiveWorkbook.SaveAs Filename:=Fname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
On Error Goto 0

@+

Merci BrunoM45

Ignorer l'erreur sera ma dernière solution. Je ne comprends pas l'utilisation de 'On error Resume Next' associé a 'On Error GoTo 0'.

Resume Next permet d'ignorer l'erreur et de passer a la ligne suivante. Pourquoi 'GoTo 0' est nécessaire?

Re,

On Error Goto 0

Permet de remettre la gestion des erreurs à la normal

Sinon, tu nous dis vouloir enregistrer des copies, donc ton code n'est pas correcte

il faudrait utiliser "ActiveWorkbook.SaveCopyAs"

Sub Test()
  Dim sFic As String, sPath As String, fName As String
  sFic = "zzz.xlsm"
  sPath = "C:\Users\XXX\OneDrive\YYY\"
  fName = sPath & sFic
  ActiveWorkbook.SaveCopyAs Filename:=fName
End Sub

@+

Merci.

J’ai toujours utilisé SaveAs et SaveCopyAs de la même façon. Je ne comprends pas vraiment la différence. Je vais essayer avec SaveCopyAs.

Merci.

J’ai toujours utilisé SaveAs et SaveCopyAs de la même façon. Je ne comprends pas vraiment la différence.

Heuuu comment est-ce possible

Ca ne fait absolument pas la même chose et ce ne sont pas les mêmes paramètres

@+

Je me suis mal exprimé. J'ai toujours vu les deux fonctions comme étant similaire et il semblerait que je n'utilisais jamais SaveCopyAs.

Je ne peux pas définir le format en utilisant SaveCopyAs. Ca devrait marcher pour ma copie excel mais pour la copie PDF je vais devoir soit utiliser autre une fonction pour exporter en PDF.

Je vais tester tout ca demain et je vous tiens au courant.

Merci

Merci pour vos réponse. La fonction SaveCopyAs ne me permettant pas d'enregistrer mon fichier au format PDF (je fais 2 copies: 1 PDF et 1 Excel). J'ai décidé d'enregistrer le fichier dans un autre dossier sur mon disque et ensuite le déplacer vers le dossier OneDrive avec FileSystemObject et la fonction move. Cela marche bien sauf que j'ai un problème si je veux ouvrir le fichier (en utilisant VBA ou directement dans l'explorateur windows) juste après la copie dans le dossier OneDrive, j'obtiens un message d'erreur réseau ne me permettant pas d'ouvrir le fichier. Si j'attend 1 min le problème disparait. Pour le moment je fais avec.

voici un example de la fonction move que j'ai utilisé:

Dim FSO as Object
Set FSO = CreateObject("Scripting.Filesystemobject")
FSO.MoveFile("SourceFileName", "TargetFileName")

Merci à tous

Salut le fil...

As tu essayé Dans l'explorateur Windows clic droit sur ton dossier où tu enregistres et tu sélectionnes toujours conserver sur cet appareil

Rechercher des sujets similaires à "enregistrement dossier onedrive hors ligne"