Bonjour,
Private Sub TftMois_Click()
Dim mois, m%, dm%, fm%, a%
mois = Split("Janv Fev Mars Avril Mai Juin Juil Aout Sept Oct Nov Dec")
a = Year(Me.Range("A4"))
Do
m = Application.InputBox("Indiquer le numéro du mois à transférer sur la " _
& "feuille mensuelle.", "Transférer Mois", , , , , , 1)
If m >= 1 And m <= 12 Then Exit Do
If m = False Then
Exit Sub
Else
MsgBox "Mois non valide", vbInformation, "Saisie non valide"
End If
Loop
dm = DateSerial(a, m, 1) - DateSerial(a - 1, 12, 31) + 3
fm = DateSerial(a, m + 1, 1) - DateSerial(a - 1, 12, 31) + 2
Me.Range(Cells(dm, 1), Cells(fm, 13)).Copy Worksheets(mois(m - 1)).Range("A4")
Worksheets(mois(m - 1)).Activate 'Pour aller vérifier... sinon supprimer cette ligne
End Sub
NB- Le bouton est nommé TftMois. L'utilisateur renseigne le mois à transférer par son numéro dans la boîte de dialogue InputBox. La méthode filtre les saisies invalides ne correspondant pas à un nombre, on teste donc en plus si ce nombre est compris entre 1 et 12. Si ce n'est pas le cas, la question est relancée jusqu'à obtention d'un nombre valide ou clic sur Annuler (particularité : Annuler renvoie False, assimilé à 0, donc si frappe 0, cela correspond à Annuler, on ne peut l'inhiber car sinon l'utilisateur ne pourrait plus sortir en annulant...)
Les lignes de début et fin sont calculées à partir des dates.
Cordialement.