Sub report()
' récupération dernier membre effectif
Dim nbEffectif As Integer
nbEffectif = Sheets(4).Range("A1048576").End(xlUp).Row
' récupération dernire colonne Histo compteur individuel
Dim nbColonnes As Integer
nbColonnes = Sheets(4).Range("XFD3").End(xlToLeft).Column
' récupération derniere date (colonne F)
Dim nbDates As Integer
nbDates = Sheets(4).Range("F1048576").End(xlUp).Row
Dim plageHistoCompteur As Range
Dim plageDates As Range
' plage histo compteur individuel : G3 à CX3 dans le cas present
' ('nbColonnes + 4' car un nom correspond à 4 cellules fusionnees RDV/GRIP/OK/KO)
Set plageHistoCompteur = Sheets(4).Range(Cells(3, 7), Cells(3, nbColonnes + 4))
' plage des dates : F5 à F28 dans le cas present
Set plageDates = Sheets(4).Range("F5:F" & nbDates)
Dim celNom As Range
Dim nom As String
Dim celDate As Range
Dim trig As Integer
' boucle sur chaque membre effectif
For x = 5 To nbEffectif
trig = 0
' verification date correspond à la date du jour sinon on fait rien
For Each celDate In plageDates
If celDate.Value = Date Then
' si on est ici c'est qu'on est dans la ligne de la date du jour
' on cherche dans la plage du histo compteur la cellule qui correspond au nom du membre
' exemple : on cherche la valeur de A5 on la trouve dans G3, on chercher la valeur de A6 on la trouve dans K3
nom = Sheets(4).Cells(x, 1).Value
Set celNom = plageHistoCompteur.Find(nom)
' on copie dans la cellule à l'intersection :
' - de la ligne de la date du jour
' - de la colonne de la cellule (où on a trouvé le nom) en modulo 3 puisqu'un nom est écrit sur 4 cellules
' la valeur de la cellule en Bx, Cx, Dx, Ex...
For trig = 0 To 3 Step 1
Sheets(4).Cells(celDate.Row, celNom.Column + trig).Value = Sheets(4).Cells(x, trig + 2).Value
Next trig
End If
Next celDate
Next x
End Sub