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

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [RESOLU] Inversion format de date dans Userform Excel 2010

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Inversion format de date dans Userform Excel 2010

n°3136041
solidxcite​r
Posté le 18-08-2014 à 16:46:58  profilanswer
 

Bonjour à tous,
 
Je suis entrain de développer un petit outil de gestion d'inventaire informatique sous Excel 2010. J'ai donc différentes feuilles que l'on remplie grâce à des formulaires créés par Userform et contrôlé par VBA.
Toutes mes fonctionnalités marchent mais je viens de me rendre compte d'un gros problème sur mes champs contenant des dates.
 
J'ai donc plusieurs formulaires différents qui contiennent plusieurs champs TextBox dans lequel je renseigne des dates au format jj/mm/aaaa. (pas de contrôle sur cette écriture, je l'écris moi-même dans ce format)
 
Prenons l'exemple suivant :
1) Je précise la date d'achat d'un ordinateur dans un champs textbox (Nommé C_DateAchat) : 16/08/2014
2) Je clique sur mon bouton enregistrer qui vient ranger la valeur dans la cellule correspondante de mon tableau : feuille.Cells(ligne, 7) = C_DateInstallation.Value. L'enregistrement fonctionne bien, pas de soucis.
3) A la prochaine ouverture, la récupération de la valeur de la cellule par mon formulaire fonctionne bien aussi : C_DateInstallation.Value = feuille.Cells(ligne, 7).
 
Le problème apparait maintenant :
4) La prochaine fois que je clique sur mon bouton enregistrer, ma date est écrite dans sa cellule au format mm/jj/aaaa, puis si je reclique à nouveau sur Enregistrer, ma date est écrite au format jj/mm/aaaa. Quasi tous mes textbox avec des dates font ce yoyo alternant jj/mm et mm/jj.
 
Ce problème apparait sur tout mes formulaire (6 différents) mais quelques rares champs n'y sont pas soumis alors que je ne fais rien de plus ou de moins sur ceux-ci.  
Je n'utilise aucune fonction pour le moment sur ces dates qui pourrait les modifier, je récupère juste leur valeur dans la cellule ou je viens l'écrire comme indiqué ci-dessus.
 
J'ai forcé pour les colonnes en question où je renseignais les dates le format jj/mm/aaaa dans l'interface graphique mais le problème continue.
 
Avez-vous une idée d'où peut venir mon problème ? J'avoue commencer à devenir fou :D Et je pris pour que ça se corrige !
 
Edit : Le problème d'inversion semble connu sur Internet et confirme ce que je pensais, la date d'entrée est bien considéré en format français jj/mm/aaaa alors que son écriture est au format américain mm/jj/aaaa. Mes dates ne changeant pas sont celles dont le jour est supérieur à 12.
Je suis allé voir mes options régionales, tout est ok. J'ai essayé de convertir les dates dans Données > Convertir > JMA, rien a changé. J'ai aussi forcé le format dans mon code directement avec feuille.Cells(ligne, 7) = Format(C_DateInstallation.Value, "dd/mm/yyyy" ), mais ne marche pas non plus. :(

 
Je vous remercie par avance de l'aide que vous m'apporterez.
Bonne fin de journée.


Message édité par solidxciter le 19-08-2014 à 13:51:45
mood
Publicité
Posté le 18-08-2014 à 16:46:58  profilanswer
 

n°3136136
olivthill
Posté le 19-08-2014 à 11:22:20  profilanswer
 

Il y a une conversion par défaut qui se fait.
Pour empêcher qu'elle ait lieue, il faut préciser la conversion à faire.
Cela signifie qu'il faut indiquer le format voulu pour chaque cellule contenant une date.
 
Cela peut se faire de plusieurs manières :
 
- Au niveau de la feuille, on sélectionne des cellules et on va dans le menu pour changer le format.
- Au niveau d'une importation d'un fichier externe, on définit le format de la colonne de destination.
- Au niveau du VBA on associe un format à une cellule par ".NumberFormat =" (pas seulement pour les nombres, mais aussi pour les dates).
 
Dans votre cas, quel est le format de feuille.Cells(ligne, 7) ? et celui de C_DateInstallation ?
 
Il est parfois utile aussi d'entourer les dates par des "#", un au début et un à la fin.
 
On peut jouer aussi avec DatePart().


Message édité par olivthill le 19-08-2014 à 11:24:37
n°3136148
solidxcite​r
Posté le 19-08-2014 à 13:50:55  profilanswer
 

Bonjour olivthill,
 
Merci beaucoup pour ta réponse, j'ai essayé chacune de tes pistes sans aucun succès. Je commençais à devenir fou (encore une fois) puis finalement j'ai forcé toutes mes colonnes contenant des dates au format Texte puis je réalise des conversions avec Cdate quand j'ai besoin de faire des calculs avec certaines dates.
 
Tout m'a l'air de fonctionner comme ça, l'inversion ne se produit plus et mes calculs prennent les bonnes dates au format jj/mm/aaaa.
 
Pour noter ma solution clairement :
1) J'ai passé l'ensemble des mes colonnes contenant des dates au format Texte en passant par l'interface graphique habituel (Sélection de la colonne, clic droit > Format de cellule > Texte)
2) Quand une opération mathématique doit être faite sur ces dates, il faut la convertir avant grâce à Cdate(dateAconvertir)

 
Merci encore une fois de ton aide olivthill.
Bonne journée à tous !


Message édité par solidxciter le 19-08-2014 à 13:51:12
n°3136161
olivthill
Posté le 19-08-2014 à 16:19:49  profilanswer
 

Merci pour la solution.
C'est vrai que j'avais aussi utilisé CDate autrefois, mais je ne m'en souvenais plus, et le contexte était différent.
Bonne journée !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [RESOLU] Inversion format de date dans Userform Excel 2010

 

Sujets relatifs
Outlook 2010 : afficher le nombre de mails non lus des sous dossiers ?[EXCEL] Arrondir si décimal supérieur à 4
UserForm ListBox save dataLogiciel lecture blu-ray format 21:9
UserForm listbox transfer to excel and saveExcel et .iqy
[EXCEL] question sur fonction "recherchev"création macro excel vers TXT
Formule excel 
Plus de sujets relatifs à : [RESOLU] Inversion format de date dans Userform Excel 2010


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