Problème de format de date sous excel? [Résolu]

Signaler
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
Bonjour tout le monde;

je récupère des donnée d'une table (sur un serveur distant) sachant que j'ai des champs de type smalldatetime, et lorsque j'exporte le contenu de mon ADOQuery vers Excel je m'aperçois que j'ai des dates qui sont écrites sous la forme : JJ/MM/AAAA HH:MM:SS (exemple : "17/04/2008 21:59:00")et d'autres dates sont écrites sous la forme : MM/JJ/AAAA HH:MM (comme si en anglais) (exemple : "06/08/2008 04:02") sachant aussi que sur mon DBGRID, toutes les dates sont écrites de la même manière (JJ/MM/AAAA HH:MM:SS) et c'est la forme que je veux avoir dans toutes mes cellules Excel.

Y a t il un problème de conversion la dessus?

Merci pour votre aide!

14 réponses

Messages postés
1
Date d'inscription
jeudi 23 octobre 2008
Statut
Membre
Dernière intervention
23 octobre 2008

Bonjour !!!

J'ai eu exactement le même pb que vous tous...

En fait, et curieusement en apparence, il faut, dans delphi, convertir la date au format us 'mm/dd/yyyy' de la façon suivante :

DateUs est déclaré en String
DateToConv en TDATE

DateUs := FormatDateTime('mm/dd/yyyy', DateToConv);

Vous l'envoyez dans Excel classiquement

XLApp.Cell[NLigne,NCol] := DateUs;

L'intérêt est que la date est en phase avec Excel, qui la convertit de lui même en date FR, en utilisant tout simplement les variables régionales de l'OS.

Garanti, ca marche !

Je viens de le tester en DELPHI 2005, avec Excel 2007, sous Vista....

A plus !!!

BurningFuze  
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

Bonjour,
en fait, j'ai exécuté en mode pas à pas et lorsque j'ai vérifier le contenu de mon ADODataSet1.FieldByName('date').AsString je l'ai trouvé eous le format : JJ/MM/AAAA HH:MM:SS, mais lorsque je l'envoie cers l'excel (vXLWorkbook4.WorkSheets['Feuil1'].Range['E'+inttostr(v)] :=ADODataSet1.FieldByName('date').asstring;)
ben ça me modifie le format en MM/JJ/AAAA HH:MM

mais le problème c'est que des fois ça me le fais et des fois ça passe normalement!!

Avez vous une idée la dessus?
Merci pour votre aide
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
bizarre ce truc..
essaie quand même çà :
DateTimeToStr(ADODataSet1.FieldByName('MonChampDate').AsDateTime);
evite aussi de nommer des champs 'date' car c'est un mot réservé..

cantador
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

Bonjour,
la même chose Cantador,
j'ai modifié mon code comme suit :
///////
ch := DateTimeToStr(ADODataSet1.FieldByName('Date_H_Debut').AsDateTime);
vXLWorkbook4.WorkSheets['Feuil1'].Range['D'+inttostr(v)]:= ch;
///////
et lorsque j'execute en mode pas à pas je trouve que la variable ch contient la chaine '08/06/2008 15:34:00' et sur la cellule Excel ça m'affiche '06/08/2008 15:34' .... je ne comprend pas pourquoi??

Merci pour votre aide!
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
Alors il faut passer une écriture avant qui impose à EXCEL de traiter les dates selon un format.
je cherche..

jette aussi un oeil dans ton panneau de configuration (options régionales)

cantador
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
C'est excel qui se mélange les crayons..
essaie çà :
Excel.Selection.NumberFormat := 'jj/mm/aaaa hh:mm:ss';

cantador
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

je ne comprend plus rien maintenant!
même après avoir imposer le format d'affichage, ben il m'affiche toujours '06/09/2008 15:35:00' au lieu de '09/06/2008 15:35:00' ... vas y comprendre!!
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

j'ai pas tellement d'xp avec excel, mais j'ai quelques questions/idées pour toi:

1)
est-ce que tu modifies le "FormatSettings" quelques part (ailleurs) dans ton code? as-tu des threads?

2)
as-tu essayer de passer par une var local avant de l'envoyer vers excel?

3)
as-tu essayer de toujours envoyer le même string vers excel (cad forcer la valeur avec une const). juste histoire de voir si ça vient de la cellule, si c'est constant, ...

4)
ton windows, c'est un windows anglais? les option regional sont toujours bonne après que ton erreur se soit produite? (tu as peut-être un soft qui te change tes options regional)

bonne chance,

Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

héé oui, je ne trouve toujours pas ou est la faille,
pour répondre à tes questions Loda
1) je ne modifie pas le "FormatSettings" dans mon code!
2) je ne passe pas par une variable locale: je fais directement :
vXLWorkbook.WorkSheets['Feuil1'].Range['C4']:=ADODataSet.FieldByName('Date_H_Debut').AsString;
3) je n'ai pas essayer de travailler avec des const!
4)j'ai un windows français et mes options sont corrects!!

c'est pour tout cela que je ne comprend rien la dessus!!
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
re,

si j'étais toi, j'essaierais  2) et 3). tu vas peut-être voir qqch.

désolé de ne pas pouvoir t'aider plus.

bonne chance,

Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

bonjour,
je suis passé par une variable locale, en exécution pas à pas, la variable contenait '11/06/2008 12:30' et dès que passe vers excel ça m'affiche : '06/11/2008 12:30'............
je déprime!
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
teste avec un compo d'export direct.

cantador
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

bonjour
comment ça un composant d'export direct??
je n'ai jamais utilisé ce type de composants!
Merci
Messages postés
301
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010

Bonjour tout le monde!
Effectivement BurningFuze, ça marche!!!!
Super, je suis vraiment content!

Merci beaucoup à vous tous, Merci Beaucoup BurningFuze!

N.B:
j'au juste appliqué cela :
DateUs := FormatDateTime('mm/dd/yyyy HH:mm', DateToConv);
Pour garder l'information de l'heure!!!

Ciao

_________
Othland