Sub Macro1()
Dim r As Range 'déclare la variable r (Recherche)
Dim dl As Long 'déclare la variable dl(Dernière Ligne)
Dim p As Range 'déclare la variable p (Plage)
Dim pa As String 'déclare la variable pa (Première Adresse)
dl = Range("B65536").End(xlUp).Row 'définit la variable dl
Set p = Range("B1:B" & dl) 'définit la variable p
With p 'prend en compte la plage p
Set r = .Find("", Cells(dl, 2)) 'définit la variable r (recherche cellule vide dans la plage p)
If Not r Is Nothing Then 'condition 1 : s'il existe au moins une cellule vide sans la plage p
pa = r.Address 'définit la variable pa (adresse de la première cellule vide rencontrée)
Do 'exécute
r.Select 'sélectionne la cellule vide
'copie la cellule du dessus si les deux de la colonne A sont identiques
If r.Offset(-1, -1).Value = r.Offset(0, -1) Then r.FillDown
Set r = .FindNext(r) 'redéfinit la variable r (Recherche le suivant)
If r Is Nothing Then Exit Sub 'si le suivant n'existe pas sort de la procédure
'tourne en boucle tant qu'il existe des cellules vides dans la plage
'dont l'adresse est différente de pa
Loop While Not r Is Nothing And r.Address <> pa
End If 'fin de la condition 1
End With 'fin de la prise en compte de la plage p
End Sub