Convertion date vba

Résolu/Fermé
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014 - 7 nov. 2012 à 20:33
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 9 nov. 2012 à 03:51
Bonjour,
J'Ai une problématique que je n'arrive pas à comprendre. Je veux convertir une colonne qui contient des dates conformes et des dates non reconnues car anglais. Par exemple, 20-avr-2012. Je fais les procédures manuelles et cela fonctionne (1-format, 2- remplacer par, 3-conversion). Par contre. si je pars une macro en faisant exactement les mêmes fonctions le résultat n'est pas équivalent. Lors de la conversion les dates se changent entre le mois et le jour. Tout parait ok mais au lieu d'inscrire le 10 août 2012 cela écrit le 08 octobre 2012????
pourquoi en programmation le résultat est différent du manuel qui lui fonctionne avec les mêmes procédures??? Je veux bien modifier la programmation mais j'Ai atteint la limite de la logique!

10 réponses

Bonjour,

Peut être un explication?

10 août 2012
08 octobre 2012

si la date est 10/08/2012 au format franças (jj/mm/aaaa) -> 10 août 2012

si la date est 10/08/2012 au format anglais (mm/dd/yyyy) -> 08 octobre 2012 après traduction en français

A+
0
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014
7 nov. 2012 à 21:09
ok mais comment faire pour le convertir corectement avec francais et anglais dans la même colonne?
et surtout pourquoi alors si je procède à la convertion sans vba cela fonctionne?
0
Difficile à dire

Regardes comment sont réglées les options régionales (panneau de configuation) et les options Excel

A+
0
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014
7 nov. 2012 à 21:21
merci YODA mais cela n'a pas de lien avec les paramètres. c'est vraiment de la conversion texte et ensuite de la conversion date.

Si mon problème existait même en mode manuel je serais capable de trouver pourquoi mais là c'est juste en vba...bizarre
0

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

Posez votre question
Tu peux mettre ton fichier sur http://www.cjoint.com/
et tu postes le lien généré

Avec le fichier sous les yeux ce sera plus parlant.

A+
0
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014
7 nov. 2012 à 21:47
merci de m'éduquer dans cet nouvel univers pour moi YODA!

Alors voici le lien pour mon fichier:
https://www.cjoint.com/?3KhvTHv2AnC
c'est la colonne F
0
J'ai le fichier mais il n'y a pas de macros

Quelle ligne pose problème? Et à la suite de quelles transformations?
0
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014
7 nov. 2012 à 22:02
Voilà la macro utilisée...désolé c'est une macro classeur personnel donc pas dans le fichier

Sub date
ActiveCell.EntireColumn.Select

Selection.NumberFormat = "dd/mm/yy;@"


Selection.Replace What:="dec", Replacement:="12", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="mai", Replacement:="05", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="avr", Replacement:="04", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="fev", Replacement:="02", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="aou", Replacement:="08", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

'

Selection.NumberFormat = "dd/mm/yy;@"
Selection.NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"

ActiveCell.EntireColumn.Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

End Sub
0
Je crois avoir réglé le problème après baucoup de tatonnements.

L'execution de la macro prend systématiquement les dates au format anglais, donc confusion.

par exemple avril en abrégé -avr- en français devient -apr- en anglais
donc il suffit de remplacer le mot français par sa traduction en anglais et la macro interprète la date correctement.

j'ai corrigé la macro en conséquence.
la derniere commande (Selection.TextToColumns Destination:=ActiveCell....)
met la pagaille, à laisser en commentaire.

Sub changedate()
ActiveCell.EntireColumn.Select

'Selection.NumberFormat = "dd/mm/yy;@"

Selection.Replace What:="dec", Replacement:="dic", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="mai", Replacement:="may", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="avr", Replacement:="apr", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="fev", Replacement:="feb", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="aou", Replacement:="aug", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="juin", Replacement:="jun", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="juil", Replacement:="jul", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

'Selection.NumberFormat = "dd/mm/yy;@"

Selection.NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"

ActiveCell.EntireColumn.Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

'Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

End Sub


A+
0
mmejuly Messages postés 8 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 17 octobre 2014
8 nov. 2012 à 15:53
WOW YODA merci énormément cela fonctionne et je dois avouer que j'étais désemparée!
où que tu sois et qui que tu sois, tu es génial :)
0
ça fait toujours plaisir d'aider quelqu'un dans l'impasse.
ç'est pour ça qu'on vient sur ce forum

Bonne continuation. ;o)
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
9 nov. 2012 à 03:51
Bonjour,

Si c'est le résultat d'une importation, il faut (à l'étape 2 ?) spécifier le format de date J/M/A sur les colonnes concernées.

eric
0