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

cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 8 juin 2008 à 10:59 - Dernière réponse : cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention
- 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!
Afficher la suite 

17 réponses

Répondre au sujet
burningfuze 1 Messages postés jeudi 23 octobre 2008Date d'inscription 23 octobre 2008 Dernière intervention - 23 oct. 2008 à 17:12
+3
Utile
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  
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de burningfuze
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 8 juin 2008 à 11:45
0
Utile
Bonjour othland,
smalldatetime connais pas ??

non, il doit y avoir une ch'tit anomalie soit dans le stockage des données de la table (jette un oeil) ou dans le code de l'export vers excel.

cantador
Commenter la réponse de cs_cantador
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 8 juin 2008 à 17:58
0
Utile
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
Commenter la réponse de cs_othland
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 8 juin 2008 à 19:46
0
Utile
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
Commenter la réponse de cs_cantador
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 9 juin 2008 à 12:33
0
Utile
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!
Commenter la réponse de cs_othland
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 juin 2008 à 14:05
0
Utile
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
Commenter la réponse de cs_cantador
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 juin 2008 à 15:06
0
Utile
C'est excel qui se mélange les crayons..
essaie çà :
Excel.Selection.NumberFormat := 'jj/mm/aaaa hh:mm:ss';

cantador
Commenter la réponse de cs_cantador
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 9 juin 2008 à 17:42
0
Utile
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!!
Commenter la réponse de cs_othland
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 juin 2008 à 21:36
0
Utile
désolé othland, mais là je rends mon tablier..
il y a quelques exemple sur le site dont un pas mal fait avec une unité
DriveOleExcel.pas mais je ne retrouve pas son auteur..

ah si tu peux aussi utiliser un compo (il y a en des free) pour faire un export direct..


si tu trouves penses à nous !

cantador
Commenter la réponse de cs_cantador
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 10 juin 2008 à 09:10
0
Utile
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.
Commenter la réponse de cs_Loda
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 10 juin 2008 à 16:45
0
Utile
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!!
Commenter la réponse de cs_othland
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 11 juin 2008 à 09:07
0
Utile
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.
Commenter la réponse de cs_Loda
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 11 juin 2008 à 15:34
0
Utile
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!
Commenter la réponse de cs_othland
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 11 juin 2008 à 15:51
0
Utile
teste avec un compo d'export direct.

cantador
Commenter la réponse de cs_cantador
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 11 juin 2008 à 16:13
0
Utile
bonjour
comment ça un composant d'export direct??
je n'ai jamais utilisé ce type de composants!
Merci
Commenter la réponse de cs_othland
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 11 juin 2008 à 16:41
0
Utile
Ce sont des compos (import/export) qui généralement (sur Compo.Execute)balance les données d'une table vers un format au choix.
il ont suffisamment de propriétés et sont bien sûr très pratiques car bien optimisés.

il faut que tu cherches un peu othland sur internet car il y en a beaucoup..
(des free et des payants)
Prends en un avec source et jette un oeil çà te donnera peut-être la solution à ton problème.

cantador
Commenter la réponse de cs_cantador
cs_othland 301 Messages postés jeudi 18 décembre 2003Date d'inscription 9 février 2010 Dernière intervention - 26 oct. 2008 à 15:06
0
Utile
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
Commenter la réponse de cs_othland

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.