Excel : pb de format date lors d'extraction

Résolu/Fermé
Larson - 25 juin 2009 à 11:47
 Alex - 30 oct. 2009 à 19:07
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.
A voir également:

7 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 juin 2009 à 18:24
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
Alléluia !

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

Bonne journée.
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 juin 2009 à 11:59
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 juin 2009 à 12:37
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
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

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 juin 2009 à 16:11
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
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 juin 2009 à 16:30
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
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
Larson > Larson
25 juin 2009 à 17:20
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
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