Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim d As Date
Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O (à adapter à ton cas)
Set PL = O.Range("A1:A" & DL) 'définit la palge PL (à adapter à ton cas)
For Each CEL In PL 'boucle sur toutes les celllules CEL de la plage PL
Select Case Len(CEL.Value) 'agit en fonction du nombre de caractères de la cellule CEL
Case 6 'cas 6 caractères
d = DateSerial(Left(CEL.Value, 4), Mid(CEL.Value, 5, 1), Right(CEL.Value, 1)) 'définit la date d (les 4 premiers pour l'année, le 5ème pour le mois, le dernier pour le jour)
CEL.Value = d 'remplace la valeur par la date
Case 7, 8 'cas 7 ou 8 caractères
d = DateSerial(Left(CEL.Value, 4), Mid(CEL.Value, 5, 2), Mid(CEL.Value, 7)) 'définit la date d (les 4 premiers pour l'année, les 5 et 6ème pour le mois, les derniers pour le jour)
CEL.Value = d 'remplace la valeur par la date
End Select 'fin de l'action en fonction du nombre de caractères de la cellule CEL
Next CEL 'prochaine cellule de la boucle
End Sub