Salut JC, salut le forum,
Si j'ai bien compris tes explications, voici ta macro modifiée qui devrait te convenir :
Sub deb()
'********* Déclaration des variables ***************
Dim maplage As Range 'déclare la variable maplage
Dim maplage2 As Range 'déclare la variable maplage2
Dim i As Range 'déclare la variable i
Dim cel As Range 'déclare la variable cel
Dim madate As Date 'déclare la variable madate
Dim mois As Byte 'déclare la variable mois
Dim a As Variant 'déclare la variable a (dans cet exemple cette variable ne sert à rien...)
Dim col As Integer 'déclare la variable col
Dim n As Byte 'déclare la variable n
'********* Déclaration des variables ***************
Sheets("Récap").Select 'sélectionne l'onglet "Récap" (au cas où tu lancerais la macro à partie d'un autre onglet)
ActiveSheet.UsedRange.Select 'sélectionne la plage utilisée de l'onglet "Récap"
ActiveCell.Select 'sélectionne la cellule active
col = ActiveCell.Column 'définit la variable col
'définit la variable maplage
Set maplage = Sheets("Récap").Range(ActiveCell, Sheets("Récap").Cells(65536, col).End(xlUp))
'définit la variable madate
madate = DateValue(Sheets("Edition").Range("I5"))
'définit la variable mois
mois = Month(madate)
n = 0 'définit la variable n
'boucle 1 sur toutes les cellules de maplage
For Each i In maplage
'condition : la date de la cellule est égale à madate
If DateValue(i.Value) = madate Then
'définit la plage maplage2 (31 cellules vers le bas à partir de i)
Set maplage2 = Range(i, i.Offset(30, 0))
'boucle 2 sur toutes les cellules de maplage2
For Each cel In maplage2
'sort de la boucle 2 au changement de mois
If Month(DateValue(cel.Value)) > mois Then Exit For
a = i.Offset(0, 1) 'dans cet exemple cette variable ne sert à rien...
'place les valeurs
Sheets("Edition").Cells(8 + n, 2) = DateValue(cel)
Sheets("Edition").Cells(8 + n, 3) = cel.Offset(0, 1)
Sheets("Edition").Cells(8 + n, 4) = cel.Offset(0, 2)
Sheets("Edition").Cells(8 + n, 5) = cel.Offset(0, 3)
Sheets("Edition").Cells(8 + n, 6) = cel.Offset(0, 4)
Sheets("Edition").Cells(8 + n, 7) = cel.Offset(0, 6)
Sheets("Edition").Cells(8 + n, 8) = cel.Offset(0, 8)
Sheets("Edition").Cells(8 + n, 9) = cel.Offset(0, 9)
Sheets("Edition").Cells(8 + n, 10) = cel.Offset(0, 12)
n = n + 1 'redéfinit la variable n
Next cel 'prochaine cellule de maplage2
Exit For 'sort de la boucle 1
End If 'fin de la condition
Next i 'prochaine cellule de la boucle 1
End Sub
À plus,
Robert