Sub Macro2()
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim x As Long 'déclare la variable x (incrément)
Dim ne As Byte 'déclare la variable ne (Nombre d'Espaces)
Dim y As Integer 'déclare la variable y (incrément)
Dim r As Range 'déclare la variable r (Recherche)
Dim li As Byte 'déclare la varialbe li (nombre de LIgnes)
Dim z As Byte 'déclare la variable z (incrément)
Application.ScreenUpdating = False 'masque les changements à l'écran
With Sheets("Grille de départ") 'prend en compte l'onglet "Grille de départ" (à adapter si tu changes)
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne de la colonne A (1)
For x = dl To 2 Step -1 'boucle 1 : inversée de la dernière ligne dl à la ligne 2
.Cells(x, 6).Value = Replace(.Cells(x, 6).Value, " ", " ") 'dans la cellule de la colonne F, remplace deux espaces par un seul espace (entre 50 et 53 il y en avait deux dans ton exemple)
ne = UBound(Split(.Cells(x, 6), " ", -1)) 'définit le nombre d'espaces de la cellule en colonne F
For y = ne To 0 Step -1 'boucle 2 : inversée sur le nombre d'espace ne à 0
.Cells(x, 6).Font.Bold = False 'supprime le gras de la cellule de la colonne F
.Cells(x, 6).Font.ColorIndex = 0 'couleur automatique dans la cellule de la colonne F
With Cells(x, 6).Characters(Start:=3 * (y + 1) - 2, Length:=2).Font 'prend en compte les deux caractères correspondant au département
.ColorIndex = 3 'couleur rouge
.FontStyle = "Gras" 'police gras
End With 'fin de la prise en compte de...
Set r = Sheets("Table DPT").Columns(1).Find(Split(.Cells(x, 6), " ", -1)(y)) 'définit la recherche
If r.Row = 322 Then li = 1 'si r se trouve en ligne 322, définit le nombre de lignes li = 1
If Not r Is Nothing And r <> " " Then li = Sheets("Table DPT").Range(r, r.End(xlDown)).Cells.Count - 1 'récupère le nombre de ligne du département
For z = 1 To li 'boucle 3 de 1 au nombre de lignes du département li
.Rows(x).Copy 'copie la ligne de la boucle 1
.Rows(x + 1).Insert Shift:=xlDown 'l'insère une ligen en dessous
.Cells(x + 1, 7).Value = r.Offset(li - z, 1).Value 'place le code (en commenánt par le dernier)
Next z 'prochaine ligne de la boucle 3
Next y 'prochain espace de la boucle 2
.Rows(x).Delete 'supprime la ligne de la boucle 1
.Range(.Cells(x, 1), .Cells(x, 7)).Interior.ColorIndex = 48 'colore de gris la ligne de la boucle 1
Next x 'prochaine ligne de la boucle 1
End With 'fin de la prise en compte de l'onglet "Grille de départ" (à adapter si tu changes)
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub