Sub Macro2()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
dl = Sheets("Données").Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne dl
For Each cel In Sheets("Données").Range("B5:B" & dl) 'boucle sur toutes les cellules éditée cel de la plage B5:Bdl...
Select Case cel.Offset(0, 2) 'agit en fonction de la cellule de la colonne D
Case "IMMOS" 'cas "IMMOS"
Select Case cel.Offset(0, 1).Value 'agit en fonction de la valeur de la cellule de la colonne C
Case "OPERATIONS DM " 'cas "OPERATIONS DM " (attention il y a un espace à la fin... Faut il le laisser ou le supprimer partout ?)
Set dest = Sheets("Résultat attendu").Range("D12").End(xlUp).Offset(1, 0) 'définit la cellule de destination
Case "OPERATIONS SVS" 'cas "OPERATIONS SVS"
Set dest = Sheets("Résultat attendu").Range("D17").End(xlUp).Offset(1, 0) 'définit la cellule de destination
Case "01 - CHAUSSEES" 'cas "01 - CHAUSSEES"
Set dest = Sheets("Résultat attendu").Range("D29").End(xlUp).Offset(1, 0) 'définit la cellule de destination
End Select 'fin de l'action en fonction de la valeur de la cellule de la colonne C
Case "EI" 'cas "EI"
Select Case cel.Offset(0, 1).Value 'agit en fonction de la valeur de la cellule de la colonne C
Case "01 - CHAUSSEES" 'cas "01 - CHAUSSEES"
Set dest = Sheets("Résultat attendu").Range("D36").End(xlUp).Offset(1, 0) 'définit la cellule de destination
Case "02 - OUVRAGES D'ART" 'cas "02 - OUVRAGES D'ART"
Set dest = Sheets("Résultat attendu").Range("D53").End(xlUp).Offset(1, 0) 'définit la cellule de destination
End Select 'fin de l'action en fonction de la valeur de la cellule de la colonne C
Case "ICAS" 'cas "ICAS"
Select Case cel.Offset(0, 1).Value 'agit en fonction de la valeur de la cellule de la colonne C
Case "OPERATIONS SVS" 'cas "OPERATIONS SVS"
Set dest = Sheets("Résultat attendu").Range("D61").End(xlUp).Offset(1, 0) 'définit la cellule de destination
Case "02 - OUVRAGES D'ART" 'cas "02 - OUVRAGES D'ART"
Set dest = Sheets("Résultat attendu").Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0) 'définit la cellule de destination
End Select 'fin de l'action en fonction de la valeur de la cellule de la colonne C
End Select 'fin de l'action en fonction de la cellule de la colonne D
cel.Copy dest 'copie la cellule et la colle dans dest
Next cel 'prochaine cellule cel de la boucle
End Sub