RE
Si on reprend le code de départ on ajoute une condition mais on aurait intérêt dans ce cas à aussi vider P6:P8
Sub EnregistrerData()
Dim TabSaisie() As Variant
Dim Mois As String
Firstline = 2 'numéro de ligne du jour 1 de chaque mois dans les feuilles mensuelles
Application.EnableEvents = False 'on désactive les évènements
With Range("t_Saisie").ListObject 'avec la table "t_Saisie" de la feuille "Saisies"
TabSaisie = .DataBodyRange.Value 'on met toutes les données dans un tablo vba
End With
Mois = Format([jour], "mmmm") 'on récupère le mois
lig = Day([jour]) + Firstline 'on en déduit le numéro de ligne destination==> suppose que le 1er du mois est toujours en ligne 3 (d'où le +2)
'on vérifie que la feuille existe et on la créé si besoin
If Not FeuilleExiste(Mois) Then
Sheets("MoisVierge").Copy after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Mois
NbJour = Day(WorksheetFunction.EoMonth(DateSerial(Year(Now), Month([jour]), 1), 0))
.Range("B3") = DateSerial(Year(Now), Month([jour]), 1)
.Range("B3:T3").AutoFill Destination:=.Range("B3:T" & NbJour + Firstline)
End With
End If
With Sheets(Mois) 'avec la feuille du mois on place les données
For i = LBound(TabSaisie, 1) To UBound(TabSaisie, 1) 'pour chaque ligne du tableau
.Cells(lig, 4 + (i - 1) * 5) = TabSaisie(i, 3)
.Cells(lig, 5 + (i - 1) * 5) = TabSaisie(i, 4)
.Cells(lig, 6 + (i - 1) * 5) = TabSaisie(i, 5)
Next i
'on ajoute les repas (on présume ici que les 3 relevés sont pour le MEME jour
.Cells(lig, 19) = TabSaisie(UBound(TabSaisie, 1) - 1, 8)
.Cells(lig, 20) = TabSaisie(UBound(TabSaisie, 1), 8)
.Cells(lig, 21) = TabSaisie(LBound(TabSaisie, 1), 7)
End With
'on vide les données de la table "t_Saisie"
if Worksheets(Saisies").Range.("P8")<>"" then
With Range("t_Saisie").ListObject
.ListColumns("G7").DataBodyRange.ClearContents
.ListColumns("Menu").DataBodyRange.ClearContents
.ListColumns("Poids").DataBodyRange.ClearContents
.ListColumns("Plat").DataBodyRange.ClearContents
.ListColumns("Commentaires").DataBodyRange.ClearContents
End With
End if
Application.EnableEvents = True
End Sub