Besoin d'un expert : Pb de gestion de date VB/excel

pier0 Messages postés 67 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005 - 12 août 2005 à 14:35
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016 - 12 déc. 2009 à 12:45
Salut,

Je reviens à la charge suite à un pb que j'ai déja évoqué sur le forum de nombreuse fois et qui reste malheuresement toujours sans réponse.

Je résume mon prog VB:

Je recupère un report.csv provenant d'une base de donnée (fichier contenant des valeurs de champs).
Ce report contient des dates en format de date francais.
Ensuite je convertis le report.csv pour mettre les données sous une forme de tableau. Ensuite je fais une copie de ce tableau sur une feuille excel d'un autre fichier excel puis je sauvegarde ce fichier excel.
Enfin j'ai du effectué une macro qui teste les contenu des cellules contenant des dates et les colories selon différent critères.

Et la je suis tombé sur un pb qui me bloque depui plusieurs jours!!!!

Toutes les dates apparaissent dans le bon ordre sur le tableau excel (quand on visualise avec excel): j'entend par bon odre le bon format, à savoir pour moi:
01/08/05 ( le 1er aout 2005) mais qd on clique sur la cellule ou qu'on regarde
dans la barre de formules c'est le drame:

la date se présente sous la forme: 08/01/2005 18:00:00

D'ou un pb dans mon programme car mon traitement sur les dates est erroné puisque les jours et les mois sont inversés!!! (dans ma fonction VB j'utilise des trucs du type: Worksheets("Résultats de comparaison").Cells(i, j).Value
et evidemment ca me prend ce qu'il ya dans la barre des formules)

J'ai essayé des trucs du genre dat = Format(dat, "dd/mm/yyyy") mais ca me donne
tj le mopis en premier, je comprend tj pas pourkoi!!

Je suis vraiment désespéré, si quelqu'un pouvait me sortir de cette galère ca serait vraiment bien.

Merci d'avance, Pier0

Rq:
Personnelement je pense que le pb c'est que vb est en anglais donc format de date anglais alors que dans le report.csv les dates sont en francais. Sans doute excel doit "croire" dans les dates de mon ex que dans 01/08/05:
01 est le mois
08 le jours

d'ou une soultion consisterait à pouvoir inverser les dates et les jours!!!!

7 réponses

Paladin2107 Messages postés 154 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 5 septembre 2008 1
12 août 2005 à 14:44
Madate = "08/01/05"
Madate = Mid(Madate, 4, 2) & "/" & Mid(Madate, 1, 2) & "/" & Mid(Madate, 7, 2)

Couscous
0
pier0 Messages postés 67 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
12 août 2005 à 15:08
Merci mais ya des cas ou ca ne marche tj pas
@+
Pier0
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 août 2005 à 16:25
et si, dans le .csv, tu convertissais les mois en lettres... ??!
PCPT
0
pier0 Messages postés 67 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
12 août 2005 à 16:52
Je peux pas convertir les mois en lettre dans le .csv car ya 1 tonne de ligne donc trop long (mon program doit tourner le plus vite possible).
Merci qd mem car c t 1 bonne idée.
Pier0
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
12 août 2005 à 17:13
Salut,
As-tu vérifié tes paramètres régionaux ? Dans l'onglet Date - Style de date court tu as quoi ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
yela Messages postés 16 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 7 août 2007
15 août 2005 à 17:16
Salut,

j'ai eu un problème semblable. J'ai utilisé la fonction 'formatDateTime'.



voici mon exemple avec VBA:



La cellule "A7" affiche 1-08-05, ce qui signifie 1 août 2005.
Dans la barre de formule il m'indique 2005-08-01. Pour avoir le
jour, le mois et l'année j'ai utilisé les formules suivantes.



'Affiche le jour

Sheets("Feuil1").Range("c1").Formula = Day(FormatDateTime(Sheets("Feuil1").Range("a7").Formula, vbLongDate))

'Affiche le mois

Sheets("Feuil1").Range("c2").Formula = Month(FormatDateTime(Sheets("Feuil1").Range("a7").Formula, vbLongDate))

'Affiche l'année

Sheets("Feuil1").Range("c3").Formula = Year(FormatDateTime(Sheets("Feuil1").Range("a7").Formula, vbLongDate))



Si tu mets vbShortDate à la place de vbLongDate, ça ne fonctionne pas. (Dans mon cas)
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
12 déc. 2009 à 12:45
attention de pas tout mélanger, une date dans excel n'est qu'un numéro.
après, il ne faut pas mélanger formula et formulalocal et format et formatlocal, le dernier traduisant de l'anglais vers la langue de la machine local.

quoiqu'il en soit months(madate) doit récupérer la bonne valeur du mois...

coïto ergo sum
0
Rejoignez-nous