Sub DécalageToInstructions()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("Calendrier")
nbcol = .Range("TabCalend").Columns.Count 'nb de colonnes dans la zone TabCalend
nblig = .Range("TabCalend").Rows.Count 'Nb de lignes à parcourir dans la zone TabCalend
For i = 1 To nbcol Step 4 'on parcourt les dates de la zone "TabCalend" qui sont une colonne sur 4
For j = 1 To nblig 'pour chaque ligne
ville = .Range("TabCalend").Item(j + 1, i) 'on récupère la ville
IndJour = (Int(j / 9) Mod 9) * 9 'numéro de ligne de la date à prendre en compte
Jour = .Range("TabCalend").Item(IndJour + 1, i) 'la date
decalage = .Range("TabCalend").Item(j + 1, i + 1) 'on récupère le décalage
If ville <> "" And decalage <> "" Then 'si il y a une ville ET un décalage
With Sheets("instructions") 'dans la feuille Instructions
Set ici = .Range("TabInst").Find(ville, lookat:=xlWhole) 'on cherche le nom EXACT de la ville
If Not ici Is Nothing Then 'si on l'a trouvée
.Range("P" & ici.Row) = decalage 'on met le décalage dans la colonne P de la meme ligne
End If
End With
.Range("TabCalend").Item(j + 1, i + 1).ClearContents 'on efface le décalage de la feuille Calendrier
End If
Next j
Next i
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub