Probleme date inversé
Bonjour à tous
j'essaie désespérément depuis plusieurs jours à résoudre mon problème.
se suis débutant en VBA, j'ai commencé il y a seulement 15 jours.
Ja vais essayer d'être suffisament clair.
j'ai créé un fichier pour un suivi client avec différents information notament une date de verif et de cloture.
Dans le formulaire BT et nouvelle BT, quand je rentre les dates elles sont au bon format.
Une fois que je valide omn formulaire les dates apparaissent dans le fichier excel et le jour et le mois est inversé.
Je n'arrive pas également sur la feuille accueil à calculer le nombre d'extincteur verifier en fonction de la date.
(j'ai mis les cellules qui me pose problème en jaune)
ci-joint le fichier
Merci pour votre aide
Je crois que c'est à cause du format américain qui est utilisé en VBA et qui inverse les jours et les mois.
Mais je ne sais pas comment le résoudre.
Bonjour
Format converti en texte
Voir Cdate
Par ailleurs tu utilises des tableaux structurés : il ne doivent pas contenir de lignes entièrement vides et on ne code pas à l’ancienne avec des TS.
On n'invoque ni la feuille ni ses cellules mais seulement le tableau croisé et ses divers ranges.
Ce qui permet de le déplacer, le réorganiser, sans tout recoder
Bonsoir,
en cours de "fabrication" on ne devrait pas jouer sur la présentation des données au niveaux des feuilles, mais seulement lorsque tout est testé et bon.
Comme l'a dit 78chris, un alignement d'une donnée sur la gauche de la cellule = de l'alphanumérique (du texte), les dates sous Excel sont des nombres entier !
Donc un alignement à droite, pour exemple une extraction de votre fichier avec aucun alignement horizontal de désigné, donc c'est l'alignement natif de la cellule qui fait fois et donc à gauche pour du texte à droite pour des chiffres et on voir sut l'image que votre date est à gauche :
Une zone de saisie dans une USF est une TexteBox, c'est à dire elle contient du texte ! Donc si maFeuille.MaCellule = MonTextBox3 alors la cellule va contenir du texte et si c'est une chose qui ressemble à une date il y aura erreur par la suite. Comme l'a dit 78chris il faut alors utiliser CDate : maFeuille.MaCellule = CDate(MonTextBox3), et VBA comprendra que la textebox contient une donnée alphanumérique correspondant à une date, il fera le transfert en la transformant en chiffre. Si votre cellule comporte un format date particulier il n'y aura plus de problème d'inversion car la valeur de la cellule sera par exemple 46583, et le format de la cellule changera ceci en 15/07/2027 avec un format date "locale" par exemple.
Vous pouvez également tester si le contenue de la TextBox3 est bien une date avec IsDate(TextBox3) qui renvoie VRAI si cela s'apparente à une date quelque soit sont "écriture" et FAUX si c'est le contraire.
@ bientôt
LouReeD