VBA Erreur lors du formatage des dates

Bonjour,

Sur une colonne j'ai les dates qui ne sont pas formatées, exemple :

  • 1960 (4 caractères) donc sous forme aaaa
  • 1121975 (7 caractères) donc sous forme jmmaaaa
  • 01101936 (8 caractères) donc sous forme jjmmaaaa

Je veux les formater sous forme jj/mm/aaaa avec le code suivant qui est correct je crois syntaxiquement!!!

Sub Test()
'
' Test Macro
'

'
'Formater la date de naissance
    Dim Plage As Range
    Dim Chaine$

    ThisWorkbook.Sheets(1).Activate

    LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

    Set Plage = Range("C2:C" LastRow)

    For Each Cellule In Plage

        Chaine = Cellule.Value

            If Len(Cells(Chaine, 3)) = 4 Then Cells(Cellule.Row, 3).Value = "30/06/" & Left(Cells(Chaine, 3), 4)

            ElseIf Len(Cells(Chaine, 3)) = 7 Then Cells(Cellule.Row, 3).Value = "0" & Left(Cells(Chaine, 3), 1) & "/" & Mid(Cells(Chaine, 3), 2, 2) & "/" & Right(Cells(Chaine, 3), 4)

            ElseIf Len(Cells(Chaine, 3)) = 8 Then Cells(Cellule.Row, 3).Value = Left(Cells(Chaine, 3), 2) & "/" & Mid(Cells(Chaine, 3), 3, 2) & "/" & Right(Cells(Chaine, 3), 4)

            End If

    Next

End Sub

Mais je reçois le message d'erreur :

Erreur d'exécution '1004'

Erreur définie par l'application ou par l'objet

Merci par avance pour votre retour.

@+

Bonjour,

avec

 For Each Cellule In Plage
        Chaine = Cellule.Value
            If Len(Cells(Chaine, 12)) = 4 Then

si Cellule a pour valeur 1121975 (par exemple), Chaine aura cette même valeur , et, lors de l'emploi de Cells(Chaine, 12) il y aura plantage puisqu'alors on dépasse le nombre maxi de lignes d'Excel (1 048 576).

Il faudrait utiliser:

.../...
If Len(Cellule.Value) = 4 Then
      Cellule.Value = "30/06/" & Cellule.Value    'Si 4 caractères
.../...

A+

Bonjour,

Ci-contre ma correction car je n'ai pas trop compris ce que vous chierchiez à faire via Cells(Chaine, 3) :

Sub Test()
Dim Plage As Range
Dim Chaine$
ThisWorkbook.Sheets(1).Activate
LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Set Plage = Range("C2:C" & LastRow)
For Each Cellule In Plage
    Chaine = Cellule.Value
    If Len(Chaine) = 4 Then
        Cells(Cellule.Row, 3).Value = CDate("30/06/" & Chaine)
        ElseIf Len(Chaine) = 7 Then
        Cells(Cellule.Row, 3).Value = "0" & Left(Chaine, 1) & "/" & Mid(Chaine, 2, 2) & "/" & Right(Chaine, 4)
        ElseIf Len(Chaine) = 8 Then
        Cells(Cellule.Row, 3).Value = Left(Chaine, 2) & "/" & Mid(Chaine, 3, 2) & "/" & Right(Chaine, 4)
    End If
Next Cellule
End Sub

Cdlt,

Bonjour Ergotamine,

Merci biennnnnnnnnnnnnnnnnnnnnn ca fonctionne

@+

Bonjour AlgoPlus,

Merci biennnnnnnnnnnnnnnnnnnnnn ca fonctionne

@+

Rechercher des sujets similaires à "vba erreur lors formatage dates"