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
A voir également:

1 réponse

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