Re : besoin de guidage
Excuse mais chez moi ça marche
On Error Resume Next 'cette ligne permet de passer à la ligne suivante si il y a une erreur (cellule u6 vide)
'la ligne suivante quitte la macro si le mois en u6 est le même que le mois en cours
If Month(Sheets("OPERATION RECURANTES").Range("U6").Value) = Month(Date) Then Exit Sub
While True 'boucle
If Len(Sheets("OPERATION RECURANTES").Range("U6").Value) = 0 Then
mavar = 11 'si u6 vide mois=11, année =2012
monan = 2012
Else
mavar = Month(Sheets("OPERATION RECURANTES").Range("U6").Value)
monan = Year(Sheets("OPERATION RECURANTES").Range("U6").Value)
End If
nblig = Sheets("OPERATION RECURANTES").Range("a65535").End(xlUp).Row 'compte le nombre de ligne
derfacture = Sheets("SAISIE FACTURES").Range("a65535").End(xlUp).Row + 1' idem pour les factures
For i = 6 To nblig 'boucle opération récurante
'ligne suivante: si date en cours de traitement>date de début
If CDate("01/" & mavar & "/" & monan) > Sheets("OPERATION RECURANTES").Cells(i, 13).Value Then
If Sheets("OPERATION RECURANTES").Cells(i, 15).Value > 0 Then
'ligne précédente si il y a encore des traites en colonne O
Sheets("SAISIE FACTURES").Select
AjoutLigne
Sheets("SAISIE FACTURES").Cells(derfacture, 1).Value = Sheets("OPERATION RECURANTES").Cells(i, 1).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 2).Value = Sheets("OPERATION RECURANTES").Cells(i, 3).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 3).Value = Sheets("OPERATION RECURANTES").Cells(i, 4).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 4).Value = CDate("01/" & mavar & "/" & monan)
Sheets("SAISIE FACTURES").Cells(derfacture, 6).Value = Sheets("OPERATION RECURANTES").Cells(i, 9).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 8).Value = Sheets("OPERATION RECURANTES").Cells(i, 10).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 9).Value = Sheets("OPERATION RECURANTES").Cells(i, 12).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 20).Value = Sheets("OPERATION RECURANTES").Cells(i, 19).Value
Sheets("SAISIE FACTURES").Cells(derfacture, 21).Value = Sheets("OPERATION RECURANTES").Cells(i, 20).Value
Sheets("OPERATION RECURANTES").Cells(i, 15).Value = Sheets("OPERATION RECURANTES").Cells(i, 15).Value - 1
derfacture = derfacture + 1
End If
End If
Next
If mavar = Month(Date) Then Exit Sub 'si mois en cours de traitement=mois en cours quitte la boucle
mavar = mavar + 1 'sinon mois=mois+1
If mavar > 12 Then
mavar = mavar - 12 'si mois>12 mois=1 et année=+1
monan = monan + 1
End If
Sheets("OPERATION RECURANTES").Range("U6").Value = CDate("01/" & mavar & "/" & monan)
A+ François