Sub tri()
' Déclaration du numéro de la ligne sur laquelle on doit recopier les informations dans la feuille destination
Dim numLigne As Integer
' On initialise le numéro de ligne à la première ligne vide de la feuille destination
numLigne = 2
'On parcours les lignes de la feuille source jusqu'à la dernière ligne non-vide
For i = 2 To Sheets(Feuil1.Name).Range("A65536").End(xlUp).Row
'On parcours les colonnes concernant les dates de la ligne i
For j = 2 To Sheets(Feuil1.Name).Range("IV" & i).End(xlToLeft).Column
'Si la colonne n'est pas vide, et donc a pour valeur une date alors
If Sheets(Feuil1.Name).Range("A" & i).Offset(0, j).Value <> "" Then
'On ajoute dans la 1ère colonne de la ligne numLigne le numéro de l'affaire (feuille destination)
Sheets(Feuil3.Name).Range("A" & numLigne).Value = Sheets(Feuil1.Name).Range("A" & i).Value
'On ajoute dans la 2ème colonne de la ligne numLigne l'IR (feuille destination)
Sheets(Feuil3.Name).Range("B" & numLigne).Value = Sheets(Feuil1.Name).Range("B" & i).Value
'On récupère ici le segment en remontant en haut de la colonne contenant la date et on l'ajoute dans la 3ème
' colonne de la ligne numLigne
Sheets(Feuil3.Name).Range("C" & numLigne).Value = Sheets(Feuil1.Name).Range("A1").Offset(0, j).Value
'On ajoute la date dans la dernière colonne de la ligne numLigne
Sheets(Feuil3.Name).Range("D" & numLigne).Value = Sheets(Feuil1.Name).Range("A" & i).Offset(0, j).Value
'Enfin, on incrémente la variable numLigne pour que la prochaine copie de données se fasse à la ligne suivante
numLigne = numLigne + 1
'Et on sort de ce For, ce qui revient à passer à la ligne suivante de la feuille source
Exit For
End If
Next
Next
End Sub