bug date excel ? - VB/VBA/VBS - Programmation
Marsh Posté le 17-08-2010 à 10:55:58
Est-ce que ça ne serait pas plutôt lié a ton format local de date dans windows ?
Marsh Posté le 17-08-2010 à 11:00:49
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.
Marsh Posté le 17-08-2010 à 11:04:51
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.
Marsh Posté le 17-08-2010 à 12:52:35
Salut,2 approches : en balayant les cellsules concernées,à adapter à ton contexte
|
ou
|
Marsh Posté le 17-08-2010 à 13:11:16
Que fait la première ? (c'est quoi csng ?)
En attendant ta réponse je test.
Marsh Posté le 17-08-2010 à 13:19:05
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."
Marsh Posté le 17-08-2010 à 13:22:22
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.
Marsh Posté le 17-08-2010 à 14:04:14
Re,si tu pouvais fournir un échantillon d'une colonne avec ces dates rétives, par exemple via http://cjoint.com/
Marsh Posté le 17-08-2010 à 14:24:00
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 :
|
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 :
|
puis la macro
Code :
|
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).
Marsh Posté le 17-08-2010 à 14:31:55
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.
Marsh Posté le 17-08-2010 à 14:59:51
Si tu peux faire un 10minutesmail je peux peut-être t'envoyer la feuille avec juste les dates dedans.
Marsh Posté le 17-08-2010 à 15:04:47
Re,si tu vas voir dans mon profil tu as mon adresse email
Marsh Posté le 17-08-2010 à 15:09:57
Merci, email envoyé
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.
Marsh Posté le 17-08-2010 à 16:01:05
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.
Marsh Posté le 17-08-2010 à 16:45:13
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.
Marsh Posté le 17-08-2010 à 16:53:37
Re,il faut travailler en amont là ou tu transformes les dates du style 04-JUIN -2010 11:00
Marsh Posté le 17-08-2010 à 22:33:05
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".
Marsh Posté le 17-08-2010 à 10:29:50
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