Excel : pb de format date lors d'extraction

Résolu
Larson -  
 Alex -
Bonjour à tous,

J'ai récupéré un tableau excel extrait d'un logiciel particulier (dont je ne connais ni le nom ni la nature) et je rencontre un problème étrange avec le format des dates : certaine sont au format français (jj/mm/aa) et d'autres sont au format anglais (genre 5-août-2006) mais le jour et le mois ont été inversés(devrait être 8-mai-2006 pour continuer sur le même exemple).

Conséquence : impossible d'uniformiser le format des dates, que j'ai manipulé en long en large et en travers.
J'ai juste réussi, en imposant un format anglais, à remettre les jours et mois dans le bon ordre pour les dates anglaises sans modifier les formats français. Reste que les dates anglaises sont au format jj/mm/aaaa et qu'il me les faudrait en jj/mm/aa et que je n'y arrive pas sans retomber sur le problème d'inversion jour/mois.
(le tableau fait plusieurs milliers de lignes et j'ai beaucoup de manipulation à effectuer dessus, donc impossible tant que je n'ai pas le bon format de date).

Bref, c'est vraiment un problème à la noix mais qui m'empêche de bosser.
J'espère avoir été suffisamment précis dans mes explications.

Voici un extrait du tableau : https://www.cjoint.com/?gzlEdaRN4R
(1ère colone : format d'origine ; 2ème colonne : modifié par mes soins, avec le jour et le mois dans le bon ordre).

Merci d'avance de votre aide.

Cordialement.

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    j'avais complètement plané tout à l'heure... vivement les vraies vacances!

    Sub dater_fr()
    Dim derlig As Long
    
    derlig = Range("B65536").End(xlUp).Row
    For cptr = 3 To derlig
        If Application.IsNonText(Cells(cptr, 2)) Then
            Cells(cptr, 2) = CDate(Month(Cells(cptr, 2)) & "/" & Day(Cells(cptr, 2)) & "/" & Year(Cells(cptr, 2)))
       Else
            Cells(cptr, 2) = CDate(Cells(cptr, 2))
        End If
    Next
    Range("B3:B" & derlig).NumberFormat = "dd/mm/yy;@"
    End Sub
    2
  2. Larson
     
    Alléluia !

    Ca fonctionne impec. Merci Michel.
    Tu m'enverras ta photo pour la statue ; )

    Bonne journée.
    1
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    pour transformer cellule B6: 3-aout-2009 en 08/03/2009
    =DATE(ANNEE(B6);JOUR(B6);MOIS(B6))

    maintenant pour détecter le format fr ou uk, peut-^tre vba mais...
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    pour transformer cellule B6: 3-aout-2009 en 08/03/2009
    =DATE(ANNEE(B6);JOUR(B6);MOIS(B6))

    maintenant pour détecter le format fr ou uk, peut-^tre vba mais...
    0
    1. Larson
       
      Bonjour Michel et merci,

      J'avais pensé à cette solution, mais ça fait faire un bon paquet de copier-coller de la formule (même en étirant la formule avec le petit carré en bas à droite de la cellule).

      Par contre je me rends compte que dans mon tableau, les formats UK sont systématiquement alignés à droite (les formats fr sont alignés à gauche). Peut-être une fonction excel de base ou une petite formule vba peut détecter ça ?

      Merci d'avance.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Oui,J'y avais pensé en buvant mon jus et puis...

    sur le classeur que tu as joint
    les dates fr sont du texte (=estexte(la cellule)) et les uk sont des nombres (=estnum(lacellule))
    si c'est pareil sur ton original, une petite macro règlera l'affaire
    donc, j'attends ta confirmation
    0
    1. Larson
       
      Le bout de tableau est un copier-coller d''un morceau de l'original donc c'est exactement la même chose dans l'original.
      Bref, je confirme.

      J'attends avec impatience ta réponse.

      Cordialement.
      0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bon D..., mais c'est bien sûr!
    C'était tout c... simple
    dans une cellule vide dans ta page tu saisis 1
    copier
    tu sélectionnes ta colonnes de dates
    edition -collage spécial- multiplier
    dans déselectionner, tu mets au format date que tu veux (format-cellule-nombre)
    0
    1. Larson
       
      Je pense avoir fait la manipulation correctement, mais après avoir mis en forme je me retrouve encore avec cette inversion jour/mois. Idem si je prends la colonne où j'ai déjà rectifié ça.
      Qu'entends-tu quand tu dis "désélectionner" ?

      J'ai essayé une formule du genre =si(estnum(cellule);date(annee(cellule);jour(cellule);mois(cellule));cellule)
      Mais ça me change toutes mes dates (quand je me mets sur une date au format uk, elle s'affiche en numérique uniquement dans la barre de fonction).
      Idem avec la fonction ESTTEXTE.

      encore une fois, je coince...
      0
      1. Larson > Larson
         
        Bon je dois partir du bureau et je suis en déplacement demain.

        Si je trouve qu'une solution à été postée à mon retour lundi, le posteur aura droit à une statue à son effigie.

        Merci d'avance de vos efforts.

        Cordialement.
        0
  8. Alex
     
    COOOOOL !!!!!

    Merci pour cette macro, elle me sauve la vie, cela fait des semaines que je bataille à temps perdu pour trouver une solution à ces maudits formats de date.

    Bravo Michel !
    0