Convertir certaines dates d'un fichier étant en format texte

Bonjour,

Après avoir effectué un import excel, certaines dates de mon fichier sont au format texte. Je voudrais les convertir au format date.

J'ai écrit cette macro mais rien ne s'affiche dans la colonne souhaitée

Dim c, l As Integer
l = Range("F65536").End(xlUp).Row
c = Range("IV1").End(xlToLeft).Column

For i = 2 To l
If IsDate(Cells(i, 6)) Then
Cells(i, c + 1).FormulaR1C1 = "=DATEVALUE(RC[-8])"
Else
Cells(i, c + 1) = Cells(i, 6)
End If
Next

PS : les dates sont dans la colonne 6

Merci d'avance pour toute aide ou idée


Je mets le fichier en pièce jointe.

Après avoir fait une petite modification, les dates au format "texte" sont bien converties mais il y a une erreur sur les dates qui étaient au format "date".

52macro-date.zip (10.64 Ko)

Bonjour,

  1. Copier une cellule vide
  2. Sélectionner la plage contenant les dates
  3. Bouton droit ==> Collage Spécial
  4. Cocher ==> Addition
  5. Modifier le format de dates

@ + +

Bonjour BILLTRUM, Salut Rachid

Un essai:

Sub export()
Dim c As Long, l As Long, Tmp As Variant
l = Range("F65536").End(xlUp).Row
c = Range("IV1").End(xlToLeft).Column

For i = 2 To l
    Tmp = Split(Cells(i, c).Value, "/")
    Cells(i, c + 1).Value = DateSerial(Tmp(2), Tmp(1), Tmp(0))
Next

End Sub

Cordialement

Bonjour à tous,

Et en utilisant l'outil de conversion

Sub export()
    Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 4), TrailingMinusNumbers:=True
    Columns("F:F").NumberFormat = "m/d/yyyy"
End Sub

A+

Merci à tous

@Efgé ça marche super bien ton code! Merci

@frangy pour les dates qui étaient au format date le convertisseur inverse les jours et les mois!

@Efgé dans mon fichier, il y a certaines cases qui contiennent des "?" au lieu de date (je n'avais pas fait attention à cela..)

Sais-tu ce que je pourrai faire pour que le code ne bug pas?

J'ai pensé à "On Error Resume Next" mais ça ne marche pas

@Rachid, j'ai essayé ça marche bien, mais je voulais le faire avec une macro et ça ne marche pas quand je le fais avec l'enregistreur de macro. Ca me laisse les dates au format texte.

Aurais tu une idée?

Bonjour,

Je ne suis pas un spécialiste de Macros, tu peux attendre le retour des amis..

@ + +

Re, bonjour frangy

cCe n'est pas très propre, mais bien placé le Resume Next fonctionne

Sub export2()
Dim c As Long, l As Long, Tmp As Variant
l = Range("F65536").End(xlUp).Row
c = Range("IV1").End(xlToLeft).Column

For i = 2 To l
    On Error Resume Next
    Tmp = Split(Cells(i, c).Value, "/")
    Cells(i, c + 1).Value = DateSerial(Tmp(2), Tmp(1), Tmp(0))
Next

End Sub

Cordialement

EDIT

Quitte à gérer les erreurs autant que l'on s'en serve

Sub export2()
Dim c As Long, l As Long, Tmp As Variant
l = Range("F65536").End(xlUp).Row
c = Range("IV1").End(xlToLeft).Column

For i = 2 To l
    On Error Resume Next
    Tmp = Split(Cells(i, c).Value, "/")
    Cells(i, c + 1).Value = DateSerial(Tmp(2), Tmp(1), Tmp(0))
    If Err Then
        Err.Clear
        Cells(i, c + 1).Interior.ColorIndex = 3
    End If
Next
End Sub
Rechercher des sujets similaires à "convertir certaines dates fichier etant format texte"