Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1048 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  bug date excel ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

bug date excel ?

n°2017363
Profil sup​primé
Posté le 17-08-2010 à 10:29:50  answer
 

Bonjour,
 
je développe une macro qui récupère et trie des données depuis une extraction. Pour chaque ligne il y a plusieurs dates, et j'ai un bug assez étrange qui se produit sur certaines de ces dates.
 
Les dates sont sur un format du type "04-JUIN -2010 11:00" avec ces espaces-là. J'ai une fonction qui converti cette date en "04/06/2010", c-à-d que j'exclus l'heure et je la mets au format date française standard.
 
Le problème survient quand j'écris cette date dans le fichier de destination, où elle apparaît sous la forme "06/04/2010", c-à-d le format anglo-saxon. Mais ça ne le fait QUE si le jour est <=12 ; je m'explique.
 
Si la date du jour est >12 (par exemple 14/08/2010), la conversion ne se fait pas ! On ne voit pas apparaître 08/14/2010 mais bien 14/08/2010.
 
Moi je voudrais que toutes les dates soit au format français, comme en sortie de ma fonction de conversion koi :/
 
Evidemment je pourrais faire une petite macro qui s'exécute après la suivante, qui vérifie si le jour est <12 et qui réécrive la macro, mais j'ai le sentiment que le bug vient d'excel et je ne pense pas que ce soit une bonne solution.
 
Si quelqu'un a une idée ça m'arrangerait.
 
Merci


Message édité par Profil supprimé le 17-08-2010 à 10:32:35
mood
Publicité
Posté le 17-08-2010 à 10:29:50  profilanswer
 

n°2017369
LeVide
Posté le 17-08-2010 à 10:55:58  profilanswer
 

Est-ce que ça ne serait pas plutôt lié a ton format local de date dans windows ?

n°2017371
Profil sup​primé
Posté le 17-08-2010 à 11:00:49  answer
 

Ben justement je crois pas, j'ai un windows en Français avec les dates en Français et ça fait le même bug sur les autres pc de la boîte.

n°2017372
Profil sup​primé
Posté le 17-08-2010 à 11:04:51  answer
 

Et je ne peux pas reproduire le bug en tapant à la main.
 
Et ça vient pas de la macro parce que quand je lui fais afficher la date à écrire elle affiche bien la bonne date.

n°2017401
kiki29
Posté le 17-08-2010 à 12:52:35  profilanswer
 

Salut,2 approches : en balayant les cellsules concernées,à adapter à ton contexte


        Cells(i, 1) = CDate(CSng(Cells(i, 1)))


ou


        Cells(i, 1).NumberFormatLocal = "jj/mm/aaaa"

n°2017403
Profil sup​primé
Posté le 17-08-2010 à 13:11:16  answer
 

Que fait la première ? (c'est quoi csng ?)
 
En attendant ta réponse je test.

n°2017404
Profil sup​primé
Posté le 17-08-2010 à 13:19:05  answer
 

Bon pour la première j'ai une incompatibilité de type, pour la deuxième j'ai une erreur "Impossible de définir la propriété NUumberFormatLocal de la classe Range."

n°2017405
Profil sup​primé
Posté le 17-08-2010 à 13:22:22  answer
 

En changeant cells(1, 1) en range("A1" ) j'ai un format bizarre ("26/01/mardi" :??:) et qui ne corrige pas le problème.
 
Edit : retour sur la première, en faisant simplement cells(i, j) = cstr(cells(i, j)) ça fonctionne.
 
Vraiment bizarre ce comportement, mais merci tu m'as mis sur la voie.
 
Edit 2 : en fait non ça marche que pour quelques cas, c'est pas une solution.
 
Putain ça commence à péter les couilles.


Message édité par Profil supprimé le 17-08-2010 à 13:42:07
n°2017413
kiki29
Posté le 17-08-2010 à 14:04:14  profilanswer
 

Re,si tu pouvais fournir un échantillon d'une colonne avec ces dates rétives, par exemple via http://cjoint.com/

n°2017416
Profil sup​primé
Posté le 17-08-2010 à 14:24:00  answer
 

Pas accès au taf :/
 
Je crois que j'ai pas trop le droit de sortir des infos de toutes façons (même si bon, avec 2 dates isolées tu ferais pas grand chose...).
 
Sinon j'ai fait 2-3 tests. Avec enregistrement de macros :
 
- je change toutes les dates en texte. Les dates qui posent pas problème (i.e jour>12) restent au format jj/mm/aaaa.
- les dates qui posent problème deviennent toutes un numéro ! (apparemment le nombre de jours depuis le 01/01/1970)
 
J'enregistre une macro.
 
Je passe une date "normale" au format date, puis une date "à problème" au format date. La date normale reste la même, la date au format texte revient avec la même erreur.
 
Je vais voir la macro qu'il a enregistré et j'ai ça :
 

Code :
  1. Range("I60" ).Select
  2.     Selection.NumberFormat = "m/d/yyyy"
  3.     Range("I71" ).Select
  4.     Selection.NumberFormat = "m/d/yyyy"


 
Alors que la première reste au format français :??: (et la deuxième inverse toujours le jour et le mois).
 
Ensuite je fais un dernier essai, je lance la macro :
 

Code :
  1. Selection.NumberFormat = "mm/dd/yyyy"


 
puis la macro
 

Code :
  1. Selection.NumberFormat = "dd/mm/yyyy"


 
successivement sur une cellule valide puis une invalide.
 
Sur une cellule valide, le résultat est TOUJOURS LE MEME (ça c'est dingue quand même), à savoir le bon, jj/mm/aaaa.
 
Sur une cellule invalide, le résultat est toujours inversé. Il y aurait pas une option dans excel qui fait que je suis en format anglosaxon par hasard ? Parce que je vois que ça pour avoir un comportement pareil (et encore).

mood
Publicité
Posté le 17-08-2010 à 14:24:00  profilanswer
 

n°2017419
Profil sup​primé
Posté le 17-08-2010 à 14:31:55  answer
 

En fait je me suis un peu trompé, peut-être que ça va éclaircir la situation.
 
Certaines dates qui ne bug pas sont aussi converties en un nombre. Cependant, elles échangent bien le jour et le mois quand je lance selection.numberformat. Par contre elles le changent "normalement", à savoir si je demande dd/mm/yyyy j'ai bien dd/mm/yyyy (alors que c'est le contraire pour celles qui bug) :/
 
Du coup je peux pas juste parcourir les lignes et lui demander dd/mm/yyyy :/
 
Edit : EN FAIT NON
 
Elles changent toutes, c'est juste qu'il faut recliquer dans la "formule" en haut puis sélectionner une autre cellule pour qu'elle se mette à jour.
 
Bref le comportement m'a l'air déterministe c'est trop chiant.
 
Edit 2 : au cas où j'ai essayé dans une feuille vide, j'ai toujours le même bug.


Message édité par Profil supprimé le 17-08-2010 à 14:50:19
n°2017429
Profil sup​primé
Posté le 17-08-2010 à 14:59:51  answer
 

Si tu peux faire un 10minutesmail je peux peut-être t'envoyer la feuille avec juste les dates dedans.

n°2017431
kiki29
Posté le 17-08-2010 à 15:04:47  profilanswer
 

Re,si tu vas voir dans mon profil tu as mon adresse email

n°2017432
Profil sup​primé
Posté le 17-08-2010 à 15:09:57  answer
 

Merci, email envoyé :jap:
 
Les dates qui déconnent sont celles avec le jour et le mois <= 12 (normalement toutes).
 
Fais pas gaffe aux couleurs au fait, ça n'a rien à voir.

n°2017448
Profil sup​primé
Posté le 17-08-2010 à 16:01:05  answer
 

Ah je croyais que t'allais répondre ici :/
 
Ben forcément tu le vois pas, d'ailleurs heureusement que je l'ai vu à temps, mais les dates dont le jour et le mois sont tous deux <= 12, bah le jour et le mois sont inversés, et obv si je change dd/mm/yyyy en mm/dd/yyyy bah ça va toutes les changer :/
 
Je peux faire une macro qui repère pile cette anomalie mais ça me paraît super sale.

n°2017459
Profil sup​primé
Posté le 17-08-2010 à 16:45:13  answer
 

Bon ben je me suis démerdé "à la main" avec la solution temporaire d'inverser jour et mois, mais ça me paraît vraiment moche, j'espère que j'aurais trouvé un truc d'ici la fin de mon stage.
 
Merci kiki et levide.

n°2017462
kiki29
Posté le 17-08-2010 à 16:53:37  profilanswer
 

Re,il faut travailler en amont là ou tu transformes les dates du style 04-JUIN -2010 11:00

n°2017521
Profil sup​primé
Posté le 17-08-2010 à 22:33:05  answer
 

Ouais bah c'est pourtant tout con cette fonction, je vire les 6 derniers caractères, je prends les 2 premiers c'est dd, je vire les 3 premiers, puis j'ai un select case en fonction du mois, puis je prends les 4 derniers.
 
Je vois pas comment elle peut mettre une date sur 3 "à l'envers".


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  bug date excel ?

 

Sujets relatifs
Excel calcul sur date en VBA[ VBA ] Afficher sous excel la date & Heure de la derniere sauvegarde
Probleme de date dans excelCréer automatiquement un fichier excel avec date&heure
Récuperer sous Excel les mails Lotus Notes (.NSF) (expédit/sujet/date)Macro Excel date et tableau croisé dynamique
PROBLEME DE DATE LORS DE L'IMPORTATION SOUS EXCEL[EXCEL] Formule de comparason de date
VB- comment extraire l'année d'une date au format jj/mm/aaaa de excel[Résolu]Simulation de date sur excel
Plus de sujets relatifs à : bug date excel ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR