Bonsoir
Dans ta macro tu ne définis pas tes variables, ce qui n'est pas très rigoureux au niveau de la programmation.
Ca marche parce que Excel, dans ce cas, déclare les variables en Variant.
Exemple "mois" est une fois du type Integer et une fois du type String
mois = Int(......)
mois = "0" & mois
Dans la colonne 8 :
- il y a des cases vides donc ta macro s'arrête sans aller jusqu'au bout du tableau.
- certaines dates saisies ont un numéro de jour à 0, ce qui génère ton erreur
Je te propose le code suivant, qui fournit le résultat en colonne 10 pour vérification:
If IsDate(Val1) Then Cells(Ligne, 10).Value = CDate(Val1)
pour une version définitive, modifier la ligne de cette façon
If IsDate(Val1) Then Cells(Ligne, Colonne).Value = CDate(Val1)
Cordialement
Sub ChangeDate()
Dim Difference As Integer
Dim Annee As Integer
Dim Mois As Byte
Dim Jour As Byte
Dim Ligne As Integer
Dim Colonne As Byte
Dim Val1 As String
Dim Max1 As Integer
Colonne = 2
Max1 = Cells(1, 1).CurrentRegion.Rows.Count
For Ligne = 2 To Max1
Val1 = Cells(Ligne, Colonne)
If Not Val1 = "" Then
Val1 = Right("000" & Val1, 6)
Annee = CInt(Left(Val1, 2))
If Annee > Year(Date) - 2000 Then
Annee = 1900 + Annee
Else
Annee = 2000 + Annee
End If
Mois = CByte(Mid(Val1, 3, 2))
Jour = CByte(Right(Val1, 2))
Val1 = Jour & "/" & Mois & "/" & Annee
If IsDate(Val1) Then Cells(Ligne, 10).Value = CDate(Val1)
End If
Next
End Sub