Creation nouveau fichier Excel pour nouveau mois
Bonjour à tous,
J'ai réalisé un fichier Excel, et j'aimerais qu'à chaque début de mois, en cliquant sur le bouton "nouveau mois" :
- cela crée un nouveau fichier avec comme nom le mois et l'année (pour l'instant le fichier créé s'appelle coucou3)
- à la création du fichier, il y ait déjà quatre feuilles préremplies
Pour faire ça, j'ai décidé d'enregistrer sous le 1er document et de supprimer les onglets qui ne m’intéressent pas.
Je pense que je suis pas trop loin du résultat, mais ça beugue lors de la suppression des onglets et je ne comprends pas pourquoi...
De plus, ma ligne ActiveWorkbook.SaveAs Filename:="C:\Users\9605296P\Desktop\coordi"&a+m&".xlsm",_ n'est pas écrite correctement, pourtant je l'ai relue 15 fois...
mdp : coordi
Merci pour votre aide,
Elsa
Bon jour Elsa, bonjour le forum,
Peut-être comme ça :
Sub nouveau_mois()
Dim WS_Count As Integer
Dim I As Byte
Dim Dte As Date
Dim m As Byte
Dim a As Integer
Dte = DateValue(Date)
m = Month(Dte)
a = Year(Dte)
MsgBox " - mois: " & Format(m, "00") & " - année: " & a
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="C:\Users\9605296P\Desktop\coordi" & "-" & a & "-" & Format(m, "00") & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
WS_Count = ActiveWorkbook.Worksheets.Count
Application.DisplayAlerts = False
For I = 1 To WS_Count
Worksheets(I).Visible = True
Select Case Worksheets(I).Name
Case "Feuil2", "Matrice", "Recapmois"
Case Else
ActiveSheet.Delete
End Select
Next I
Application.DisplayAlerts = True
Worksheets("Matrice").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Date, "dd-mm-yyyy")
ActiveWindow.DisplayGridlines = False
Range("F2").Value = Date
ActiveSheet.Protect
Sheets("Matrice").Visible = False
Sheets("Feuil2").Visible = False
End SubSalut,
Merci pour ton aide, le code est très clair, je ne connaissais pas la fonction case
Cependant, lorsque je lance la macro ça marche penant les 4 premières itérations, mais après ça m'affiche une erreur d’exécution 9
sans rien justifier .
D'après lui, c'est la ligne Worksheets(I).Visible = True qui bloque, j'ai regardé un peu sur internet, d'après eux il faut préciser dans quel workbook on est, mais j'ai essayé et ça ne change rien...
J'ai remis mes feuilles dans l'ordre (genre : "feuil2","recapmois","matrice", et ensuite les dates par ordre chrono)
mais la macro bloque et ne supprime pas tous les onglets que je voudrais supprimer, je ne comprends pas
Re,
Oui, en effet. Une boucle sur le nombre d'onglet avec, à l'intérieur de cette boucle, des onglets qui sont supprimés, ça plante forcément... Essaye comme ça :
Sub nouveau_mois()
Dim WS As Worksheet
Dim Dte As Date
Dim m As Byte
Dim a As Integer
Dte = DateValue(Date)
m = Month(Dte)
a = Year(Dte)
MsgBox " - mois: " & Format(m, "00") & " - année: " & a
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="C:\Users\9605296P\Desktop\coordi" & "-" & a & "-" & Format(m, "00") & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = False
For Each WS In Worksheets
WS.Visible = True
Select Case WS.Name
Case "Feuil2", "Matrice", "Recapmois"
Case Else
WS.Delete
End Select
Next WS
Application.DisplayAlerts = True
Worksheets("Matrice").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Date, "dd-mm-yyyy")
ActiveWindow.DisplayGridlines = False
Range("F2").Value = Date
ActiveSheet.Protect
Sheets("Matrice").Visible = False
Sheets("Feuil2").Visible = False
End SubYESS !
C'est super, ça marche parfaitement !
Merci thau Theme