En revanche peut tu m'expliqué un peu cette ligne : If Not IsError(.Cells(i, 17))
Il s'agit de vérifier que la cellule ne contient pas de message d'erreur du type "#N/A", auquel cas on supprime le contenu avec l'instruction :
Else: .Cells(i, 17).ClearContents
Et cette ligne : .Cells(i, 17) = DateSerial(CInt(Right(Temp, 4)), CInt(Mid(Temp, 3, 2)), CInt(Left(Temp, 2)))
DateSerial est une fonction qui permet de reconstituer une date en indiquant l'année, le mois et le jour (fonction DATE() sous Excel).
CInt convertie un nombre stocké sous forme de chaîne de caractères en nombre entier
Right est l'équivalent VBA de la fonction Excel DROITE(Chaine;NbCaractères)
Left : idem avec la fonction GAUCHE
Mid : idem avec la fonction STXT
Je ne comprends pas le Mid : le 3,2 j'arrive pas a me repérer sur la date par exemple : 11 12 2018. Il correspond à quoi le 3,2.
Mid permet de récupérer un nombre de caractères défini (ici 2), à partir d'une position définie dans la chaîne de caractères (ici, à partir du 3ème caractère). Comme on a au préalable supprimé les espaces, cette fonction permet de récupérer le mois : 11122018.
Et cette ligne : If Len(Replace(.Cells(i, 17), " ", "")) = 8 Then
Len est l'équivalent VBA de NBCAR(), et donne le nombre de caractères d'une chaîne. Une fois que l'on a supprimé les espaces, on ne travaille que sur des dates à convertir, qui ont donc logiquement 8 caractères (JJMMAAAA).