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. 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
    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 :)
      1. ça fait toujours plaisir d'aider quelqu'un dans l'impasse.
        ç'est pour ça qu'on vient sur ce forum

        Bonne continuation. ;o)
    2. 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+
      1. 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
        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
          1. J'ai le fichier mais il n'y a pas de macros

            Quelle ligne pose problème? Et à la suite de quelles transformations?
        2. 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+
          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
            1. Difficile à dire

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

              A+
              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?
                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+