Procédure de sauvegarde avec vba

LinDouch42 -  
ptitpanda Messages postés 67 Statut Membre -
Bonjour,

J'ai une procédure de sauvegarde dans une macro et je souhaiterai rajouter la création d'un sous dossier supplémentaire.
Cette procédure me donne une possibilité d'ajouter un sous dossier année s'il n'existe pas et je voudrais rajouter un autre sous dossier mois, certainement en utilisant Format([F1], "mmmm", pour que le fichier soit rangé dans le dossier Facture \AnnexeFactures\"Année"\"mois"

Merci pour votre aide

' Procédure de sauvegarde du nouveau Classeur -----------------------------------
    Application.DisplayAlerts = False ' Désactive la confirmation de remplacement
    On Error Resume Next
        'Dossier = "C:\Users\linda\Documents\COLIS LOIRE EXPRESS\Gestion Clients\Factures\AnnexeFactures\"
        Dossier = ThisWorkbook.Path & "\..\Factures\AnnexeFactures\"
        ' On ajoute le sous-dossier année
        FileName = Dossier & Format([F1], "yyyy")
        ' On le crée s'il n'existe pas
        If Dir(FileName, vbDirectory) = "" Then MkDir FileName
        
        'FileName = FileName & "\" & "Annexe_1_Détail_Prestations_Spéciales_Facture_Mois_" & Format([F1], "mmm_yyyy")
        
        FileName = FileName & "\" & "Annexe 2 - Facture " & Format([F1], "mmmm yyyy") & " - Récap prestations spéciales - Ciblex Mions"
        
       
        ' On va tenter de sauvegarder le nouveau Classeur avec le nom prévu
        ActiveWorkbook.SaveAs FileName:=FileName
        If Err > 0 Then
            ' le dossier n'existant probablement pas,
            ' l'utilisateur doit en choisir un
            FileName = Application.GetSaveAsFilename( _
                FileFilter:="Excel (*.xlsx),*.xlsx", _
                InitialFileName:=FileName)
            ' On va tenter de sauvegarder avec le nom fourni
            If FileName <> False _
            Then ActiveWorkbook.SaveAs FileName:=FileName
        End If
    On Error GoTo 0
   
  ' Fermeture automatique du Classeur s'il a pu être sauvegardé
    If ActiveWorkbook.Saved Then
        ActiveWorkbook.Close
    Else
        Application.DisplayAlerts = True
    End If

1 réponse

  1. ptitpanda Messages postés 67 Statut Membre 8
     
    Bonjour,

    Si j'ai bien compris qu'il faut rajouter le nom du mois il suffit de rajouter les lignes après que l'on ait créé le dossier de l'année:

    ' Procédure de sauvegarde du nouveau Classeur -----------------------------------
        Application.DisplayAlerts = False ' Désactive la confirmation de remplacement
        On Error Resume Next
            'Dossier = "C:\Users\linda\Documents\COLIS LOIRE EXPRESS\Gestion Clients\Factures\AnnexeFactures\"
            Dossier = ThisWorkbook.Path & "\..\Factures\AnnexeFactures\"
            ' On ajoute le sous-dossier année
            Filename = Dossier & Format([F1], "yyyy")
            ' On le crée s'il n'existe pas
            If Dir(Filename, vbDirectory) = "" Then MkDir Filename
            
            ' on rajoute le nom du mois
            Filename = Filename & "\" & Format([F1], "mmmm")
            ' On le crée s'il n'existe pas
            If Dir(Filename, vbDirectory) = "" Then MkDir Filename
    
            'FileName = FileName & "\" & "Annexe_1_Détail_Prestations_Spéciales_Facture_Mois_" & Format([F1], "mmm_yyyy")
            
            Filename = Filename & "\" & "Annexe 2 - Facture " & Format([F1], "mmmm yyyy") & " - Récap prestations spéciales - Ciblex Mions"
            
           
            ' On va tenter de sauvegarder le nouveau Classeur avec le nom prévu
            ActiveWorkbook.SaveAs Filename:=Filename
            If Err > 0 Then
                ' le dossier n'existant probablement pas,
                ' l'utilisateur doit en choisir un
                Filename = Application.GetSaveAsFilename( _
                    FileFilter:="Excel (*.xlsx),*.xlsx", _
                    InitialFileName:=Filename)
                ' On va tenter de sauvegarder avec le nom fourni
                If Filename <> False _
                Then ActiveWorkbook.SaveAs Filename:=Filename
            End If
        On Error GoTo 0
       
      ' Fermeture automatique du Classeur s'il a pu être sauvegardé
        If ActiveWorkbook.Saved Then
            ActiveWorkbook.Close
        Else
            Application.DisplayAlerts = True
        End If
        
    


    Je pense que c'est ce que tu souhaitais

    Bonne journée
    0