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 , en fait, j'ai testé l'intégration de ta solution dans le code, mais ça beug toujours au même endroit, du coup, j'aimerais déterminer la cause de l'erreur, mais je ne sais pas comment repérer la variable qui pose problème, parce que je dois la tester a chaque fois sur l'ensemble des rapports.

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

Rechercher des sujets similaires à "erreur enregistrement fichier vba"