Erreur enregistrement du fichier (VBA)
Bonjour à tous,
J'ai des rapports qui via un code VBA s'enregistrent automatiquement dans un répertoire avec des noms définis en se basant sur un fichier de structure "Template". La macro fonctionne parfaitement, mais elle affiche l'erreur suivante pour certains rapports "Erreur 1004 - Document non enregistré", ce qui m'oblige de tout fermer et de la relancer pour qu'elle continue à générer les rapports.
Je souhaite trouver une solution pour que la macro puisse générer l'ensemble des rapports sans interruption, merci d'avance pour votre aide!!!
Ligne concernée par l'erreur:
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel12, CreateBackup:=False
Le code de la fonction:
Private Function updateRapport(paire As String, code_region As String, code_classement As Integer, repertoirejour As String, Fichierformesource As String, TypeRapport As String, ShowPDF As Boolean)
Dim wb_target As Workbook
Dim fichier As String
Dim DEPOT As String
DEPOT = sources.Cells(5, 2).Value
Windows(ThisWorkbook.Name).Activate
Sheets("Modop").Select
' on ouvre le fichier de structure (source) qui sert de base à tous les fichiers de region
' on copie les informations nécessaires
'wb_target.Activate
'date du jour dans le premier onglet
Sheets("Accueil").Select
Range("G5:H5").Value = Now()
'changement du titre/nom de la région
Sheets("Rapport opérationnel").Select
Range("G1:L2").Select
ActiveCell.FormulaR1C1 = paire
'enregistrement A MODIFIER
'Application.Calculation = xlAutomatic
'supprimer les lignes datant d'aujourd'hui
Application.Calculate
'nettoyage de l'onglet C_REAL
Sheets("Calculs").Select
If Sheets("Calculs").Range("N2").Value <> "KO" Then
Sheets("C_REAL").Select
Range("A1:BD1").Offset(Sheets("Calculs").Range("N2").Value - 1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
End If
'nettoyage de l'onglet C_VV
If Sheets("Calculs").Range("O2").Value <> "KO" Then
Sheets("C_VV").Select
Range("A1:AC1").Offset(Sheets("Calculs").Range("O2").Value - 1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
End If
ActiveWorkbook.RefreshAll
Application.Calculate
Sheets("Calculs").Visible = False
Sheets("Rapport opérationnel").Select
Range("A1").Select
'ActiveWorkbook.Save
'enregistrement du fichier .xlsb avec la date
fichier = repertoirejour & "\" & "Données - " & paire & " - " & Format(Date, "yyyy-mm-dd") & ".xlsb"
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel12, CreateBackup:=False
Sheets("Rapport opérationnel").Select
'enregistrement en pdf avec date
If paire = "Données XX_XX_XX_XX_XX" Then
fichier = repertoirejour & "\" & "Données - " & "XX_XX_XX_XX" & " - " & Format(Date, "yyyy-mm-dd") & ".pdf"
ElseIf paire = "Données XX_XX_XX_XX" Then
fichier = repertoirejour & "\" & "Données - " & "XX_XX_XX" & " - " & Format(Date, "yyyy-mm-dd") & ".pdf"
Else
fichier = repertoirejour & "\" & "Données - " & paire & " - " & Format(Date, "yyyy-mm-dd") & ".pdf"
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=ShowPDF
'enregistrement en pdf dans repertoire partagé avec strat A MODIFIER
'fermeture du fichire Excel
ActiveWorkbook.Close False
End Function
Bonjour Ali_3200 et
Tu peux essayer avec
' En cas d'erreur on continue
On Error Resume Next
' Enregistrer le fichier
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel12, CreateBackup:=False
' Réactiver la getion normale des erreurs
On Error GoTo 0
Mais le mieux serait de déterminer pourquoi cette erreur, certainement dans les variables transmises à ta fonction
A+
Merci beaucoup Bruno pour ton aide
Bonjour Ali_3200 et
Tu peux essayer avec
' En cas d'erreur on continue On Error Resume Next ' Enregistrer le fichier ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel12, CreateBackup:=False ' Réactiver la getion normale des erreurs On Error GoTo 0
Mais le mieux serait de déterminer pourquoi cette erreur, certainement dans les variables transmises à ta fonction
A+
Bonjour Ali, Bruno,
Tu appelles la fonction updateRapport() avec plusieurs arguments, dont paire et repertoirejour ; m'est avis que tu devrais vérifier le contenu de ces 2 variables ; je crois bien que tu y découvriras la cause de l'erreur... mais je peux me tromper, c'est juste une piste.
dhany
Mercii Dhaany pour ton aide, mais j'ai tout essayé, le problème persiste. ce que je comprends pas c'est que quad la Macro beug à certaine étape (je génère des rapports en boucle), et quand je la relance à partir de cette étape ça fonctionne sans problème, mais ça beug après, et ainsi de suite. je ne sais pas s'il y a des contraintes Excel en général pendant la nomination ou l'enregistrement des fichiers...
Bonjour Ali, Bruno,
Tu appelles la fonction updateRapport() avec plusieurs arguments, dont paire et repertoirejour ; m'est avis que tu devrais vérifier le contenu de ces 2 variables ; je crois bien que tu y découvriras la cause de l'erreur... mais je peux me tromper, c'est juste une piste.
dhany
Bonjour Ali, Bruno,
Comme le problème persiste, pour pouvoir t'aider davantage, il faudrait que tu envoies ton fichier (sans données confidentielles) ; pour cela, tu peux utiliser le bouton « Ajouter des fichiers » qui est situé juste sous la fenêtre d'édition du post.
dhany