Problème de format de date sous excel?

Résolu
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 8 juin 2008 à 10:59
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 26 oct. 2008 à 15:06
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

burningfuze Messages postés 1 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 23 octobre 2008
23 oct. 2008 à 17:12
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  
3
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
8 juin 2008 à 17:58
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
8 juin 2008 à 19:46
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
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
9 juin 2008 à 12:33
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!
0

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

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
9 juin 2008 à 14:05
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
9 juin 2008 à 15:06
C'est excel qui se mélange les crayons..
essaie çà :
Excel.Selection.NumberFormat := 'jj/mm/aaaa hh:mm:ss';

cantador
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
9 juin 2008 à 17:42
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!!
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
10 juin 2008 à 09:10
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.
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
10 juin 2008 à 16:45
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!!
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
11 juin 2008 à 09:07
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.
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
11 juin 2008 à 15:34
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!
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
11 juin 2008 à 15:51
teste avec un compo d'export direct.

cantador
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
11 juin 2008 à 16:13
bonjour
comment ça un composant d'export direct??
je n'ai jamais utilisé ce type de composants!
Merci
0
cs_othland Messages postés 299 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
26 oct. 2008 à 15:06
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
0