Pb avec les Dates stockées au format Texte et les macros VB

Résolu/Fermé
Grabouille97 Messages postés 3 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 janvier 2013 - 16 janv. 2013 à 08:45
Grabouille97 Messages postés 3 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 janvier 2013 - 17 janv. 2013 à 13:33
Bonjour,

J'utilise une macro VB pour copier-coller des données d'un classeur vers un autre, et je rencontre un problème dans l'inerprétation d'un champ qui contient un texte dont j'extrait une date.
Le contenu de la cellule de départ est le suivant : =T(" (04/01/2013 15:17:34)")
La macro Excel commence par supprimer tout les caractères qui ne font pas partie de la date :
Selection.Replace What:="=T(""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=""")", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ()", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="( ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" (", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=")", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=True
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

C'est à ce moment là que j'ai un problème avec les date du type 04/01/2013 15:17:34 qui sont systématiquement interprétée comme étant au format : mm/dd/yyyy hh:mm:ss
Je me retrouve avec une date au 1er Avril, au lieu du 4 janvier !

comment faire?
Merci.
A voir également:

5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
16 janv. 2013 à 09:31
Bonjour,

Quel EXCEL avez-vous
0
Grabouille97 Messages postés 3 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 janvier 2013
16 janv. 2013 à 09:33
Bonjour F894009,

Je travaille sous Excel 2007. Le fichier dont j'extrais les données et en Excel 2003.

Merci.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
16 janv. 2013 à 09:44
Re,

par macro, copier les donnees d'un fichier vers l'autre, ensuite utiliser la conversion de donnees pour enlever les caracteres "parasites" et enfin formater vos cellules.

Avec l'enregistreur (sans la copie) cela donne ceci (j'ai pris toutes la colonne mais vous pouvez selectionner seulement une plage de cellules):

Sub Macro1()
'
' Macro1 Macro
'

'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 9), Array(6, 1), Array(25, 9)), TrailingMinusNumbers:= _
True
Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss"
End Sub

Ce code peut-etre ameliore par des modif manuelles

A+
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 16/01/2013 à 10:14
Bonjour,

ou bien :
[A1] = CDate(Replace(Replace([A1], "(", ""), ")", ""))
ou :
[A1] = CDate(Mid([A1], 3, 19))

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
16 janv. 2013 à 10:29
Bonjour et bonne annee eriiic

Je passe par la conversion de donnee du menu donnee parce que beaucoup de gens ne savent pas ou oublient que cela existe et pour des choses simple cela peut depanner.
Le format c'est pour afficher les secondes.

Bye
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 janv. 2013 à 10:39
Salut f894009,

Mes meilleurs voeux à toi aussi.

Oui, c'est une bonne méthode.
Mais je voulais lui montrer quand même CDate() qui avec DateValue permettent de convertir une date texte en date numérique sans être embêté par l'interprétation en format américain mm/dd.

eric
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
16 janv. 2013 à 11:08
Re,
Tout a fait d'accord avec toi, pour moi j'utilie CDate() (evite beaucoup de galeres), mais j'ai souvent remarque que peu de gens regarde les menus, utilise tres peu voir pas l'aide excel et idem pour l'enregistreur de macro (il ne fait pas tout, mais quand meme!!).

Bye
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Grabouille97 Messages postés 3 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 17 janvier 2013
17 janv. 2013 à 13:33
Bonjour,
Et merci de votre aide, ça fonctionne bien : j'ai opté pour la solution CDate().

Problème résolu
0