Convertion date vba

Résolu
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

  1. 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
    1. 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
      1. Difficile à dire

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

        A+
        0
        1. 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
          1. 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
            1. 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
              1. J'ai le fichier mais il n'y a pas de macros

                Quelle ligne pose problème? Et à la suite de quelles transformations?
                0
            2. 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
              1. 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
                1. 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
                  1. ça fait toujours plaisir d'aider quelqu'un dans l'impasse.
                    ç'est pour ça qu'on vient sur ce forum

                    Bonne continuation. ;o)
                    0
                2. Contributeur
                  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