Format date différents entre VBE et Excel (inversion JJ et MM)
18 réponses
FdeCourt
Bonjour,
J'ai des macros qui utilisent des dates ins=E9rer dans des cellules.
Mon probl=E8me est que l'interpretation de la date me semble =EAtre
diff=E9rent entre ce qui est saisie dans la cellule et ce que r=E9cup=E8re
la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien
consid=E9r=E9 comme une date (valeur num=E9rique 40151). Par contre, quand
je cherche =E0 manipuler cette valeur, elle se transforme en 12 avril
2009 et non plus 4 d=E9cembre 2009.
Mes options r=E9gionales sont bien =E0 JJ/MM/AAAA
Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont invers=E9s.
C'est vraiment étrange. Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click() Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/ yyyy") Unload Me End Sub
Private Sub UserForm_Activate() UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/ yyyy") End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le format, sans.... Rien à faire, soit cela s'inverse toujours entre chaque clique, soit cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/ MM/AAAA dans ma cellule et dans mon TextBox ?
Merci pour ton aide.
Cordialement,
F.
C'est vraiment étrange.
Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click()
Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/
yyyy")
Unload Me
End Sub
Private Sub UserForm_Activate()
UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/
yyyy")
End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le
format, sans....
Rien à faire, soit cela s'inverse toujours entre chaque clique, soit
cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/
MM/AAAA dans ma cellule et dans mon TextBox ?
C'est vraiment étrange. Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click() Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/ yyyy") Unload Me End Sub
Private Sub UserForm_Activate() UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/ yyyy") End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le format, sans.... Rien à faire, soit cela s'inverse toujours entre chaque clique, soit cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/ MM/AAAA dans ma cellule et dans mon TextBox ?
Merci pour ton aide.
Cordialement,
F.
michdenis
A ) Si tu avais parlé dès le début d'une date dans un textbox la donne de ton problème aurait été plus facile à saisir
Si j'écris 09/02/09 comment fais-tu pour savoir de quelle date il s'agit ?
est-ce le 9 février 2009, 2 septembre 2009.... Comme excel n'est pas très bon pour deviner, quand tu utilises une fonction de conversion comme "Cdate()", excel interprète la date que tu lui présente à partir du format existant dans le panneau de configuration de Windows.
En conséquence, la fonction de conversion Cdate() a ses limites ! si tu envoies ton fichier vers un destinataire qui utilise une configuration différente des dates dans son panneau de configuration, il est plus que probable que ta procédure va en souffrir. Tu peux utiliser une fonction qui va faire mouche à tout coup ! x = dateserial(Year(),Month(),Day())
De plus, si la saisie de la date dans le textbox se fait manuellement, comment s'assurer que tous les usagers vont entrer la date au format que tu demandes ? Là aussi, c'est problématique !
"FdeCourt" a écrit dans le message de groupe de discussion :
C'est vraiment étrange. Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click() Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/ yyyy") Unload Me End Sub
Private Sub UserForm_Activate() UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/ yyyy") End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le format, sans.... Rien à faire, soit cela s'inverse toujours entre chaque clique, soit cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/ MM/AAAA dans ma cellule et dans mon TextBox ?
Merci pour ton aide.
Cordialement,
F.
A ) Si tu avais parlé dès le début d'une date dans un textbox
la donne de ton problème aurait été plus facile à saisir
Si j'écris 09/02/09 comment fais-tu pour savoir de quelle date il s'agit ?
est-ce le 9 février 2009, 2 septembre 2009....
Comme excel n'est pas très bon pour deviner, quand tu utilises une
fonction de conversion comme "Cdate()", excel interprète la date que
tu lui présente à partir du format existant dans le panneau de configuration
de Windows.
En conséquence, la fonction de conversion Cdate() a ses limites ! si tu envoies
ton fichier vers un destinataire qui utilise une configuration différente des dates
dans son panneau de configuration, il est plus que probable que ta procédure va
en souffrir. Tu peux utiliser une fonction qui va faire mouche à tout coup !
x = dateserial(Year(),Month(),Day())
De plus, si la saisie de la date dans le textbox se fait manuellement, comment s'assurer
que tous les usagers vont entrer la date au format que tu demandes ? Là aussi,
c'est problématique !
"FdeCourt" <fdecourt@gmail.com> a écrit dans le message de groupe de discussion :
ce2ccadb-d588-49f7-aa66-082c0940a802@o10g2000yqa.googlegroups.com...
C'est vraiment étrange.
Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click()
Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/
yyyy")
Unload Me
End Sub
Private Sub UserForm_Activate()
UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/
yyyy")
End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le
format, sans....
Rien à faire, soit cela s'inverse toujours entre chaque clique, soit
cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/
MM/AAAA dans ma cellule et dans mon TextBox ?
A ) Si tu avais parlé dès le début d'une date dans un textbox la donne de ton problème aurait été plus facile à saisir
Si j'écris 09/02/09 comment fais-tu pour savoir de quelle date il s'agit ?
est-ce le 9 février 2009, 2 septembre 2009.... Comme excel n'est pas très bon pour deviner, quand tu utilises une fonction de conversion comme "Cdate()", excel interprète la date que tu lui présente à partir du format existant dans le panneau de configuration de Windows.
En conséquence, la fonction de conversion Cdate() a ses limites ! si tu envoies ton fichier vers un destinataire qui utilise une configuration différente des dates dans son panneau de configuration, il est plus que probable que ta procédure va en souffrir. Tu peux utiliser une fonction qui va faire mouche à tout coup ! x = dateserial(Year(),Month(),Day())
De plus, si la saisie de la date dans le textbox se fait manuellement, comment s'assurer que tous les usagers vont entrer la date au format que tu demandes ? Là aussi, c'est problématique !
"FdeCourt" a écrit dans le message de groupe de discussion :
C'est vraiment étrange. Meme avec ce code cela ne fonctionne pas :
Private Sub CommandButton1_Click() Cells(2, 2).Value = Format(CDate(UserForm1.madate1.Value), "dd/mm/ yyyy") Unload Me End Sub
Private Sub UserForm_Activate() UserForm1.madate1.Value = Format(CDate(Cells(2, 2).Value), "dd/mm/ yyyy") End Sub
J'ai essayer plusieurs combinaison, avec le Cdate, sans, avec le format, sans.... Rien à faire, soit cela s'inverse toujours entre chaque clique, soit cela affiche toujours la date au format MM/JJ/AAAA.
Dans ce cas, comment faire pour que la date soit toujours au format JJ/ MM/AAAA dans ma cellule et dans mon TextBox ?
Merci pour ton aide.
Cordialement,
F.
Blaise Cacramp
Selon : Bonjour ou bonsoir
Et donc, un peu de rigueur et aussi de tests garde-fou peuvent résoudre le problème.
Cdt, Blaise ---- ---- ----
Selon : Bonjour ou bonsoir
Et donc, un peu de rigueur et aussi de tests garde-fou peuvent résoudre le
problème.
Et donc, un peu de rigueur et aussi de tests garde-fou peuvent résoudre le problème.
Cdt, Blaise ---- ---- ----
Fredo P.
Enfin Tous L'interprétation anglo-saxonne d'une date par rapport à une cellule qui change de valeur à chaque clic de bouton, c'est tout à fait normal qu'un coup sur 2 la date change!
Fredo P.
"isabelle" a écrit dans le message de news: %
bonjour,
FdeCourt a écrit :
Juste pour savoir, est-ce que le même comportement est reproductible sur vos PC ?
je n'ai pas ce problème, sur mon pc,
dans mes options régionales le format est celui iso int. : aaaa-mm-jj
isabelle
Enfin Tous
L'interprétation anglo-saxonne d'une date par rapport à une cellule qui
change de valeur à chaque clic de bouton, c'est tout à fait normal qu'un
coup sur 2 la date change!
Fredo P.
"isabelle" <i@v> a écrit dans le message de news:
%23L7c274bKHA.2572@TK2MSFTNGP05.phx.gbl...
bonjour,
FdeCourt a écrit :
Juste pour savoir, est-ce que le même comportement est reproductible
sur vos PC ?
je n'ai pas ce problème, sur mon pc,
dans mes options régionales le format est celui iso int. : aaaa-mm-jj
Enfin Tous L'interprétation anglo-saxonne d'une date par rapport à une cellule qui change de valeur à chaque clic de bouton, c'est tout à fait normal qu'un coup sur 2 la date change!
Fredo P.
"isabelle" a écrit dans le message de news: %
bonjour,
FdeCourt a écrit :
Juste pour savoir, est-ce que le même comportement est reproductible sur vos PC ?
je n'ai pas ce problème, sur mon pc,
dans mes options régionales le format est celui iso int. : aaaa-mm-jj
isabelle
Fredo P.
Comme cela c'est bon! Private Sub CommandButton3_Click() Cells(2, 2).Value = detail.madate Unload Me End Sub
Private Sub UserForm_Activate() detail.madate.Value = CDate(Cells(2, 2)) End Sub
--
Fredo P.
"FdeCourt" a écrit dans le message de news:
Dans mon code réèl, j'ai bien déclaré ma variable comme étant une date.
On 27 nov, 18:02, "michdenis" wrote:
Bonjour,
Ok, ta date est dans une cellule dont excel reconnaît le format comme étant une date.
Lorsque tu récupères cette valeur dans VBA, pends-tu le soin de définir le "type" de ta variable
Dim D as date D = Range("A1")
Ou tu pourrais utiliser ceci : Tu récupères la date de la cellule A1 par sa valeur numérique en utilisant une variable de typ Long et la propriété .Value2 de l'objet Range.
Dim D As Long D = Range("A1").Value2 D = 40144 si en A1 il y a la date d'aujourd'hui
Et pour retourner la valeur de la variable D sous forme de date Range("A2").value = cdate(D)
Sinon, donne un exemple de la problématique que tu rencontres.
"FdeCourt" a écrit dans le message de groupe de discussion :
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules. Mon problème est que l'interpretation de la date me semble être différent entre ce qui est saisie dans la cellule et ce que récupère la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien considéré comme une date (valeur numérique 40151). Par contre, quand je cherche à manipuler cette valeur, elle se transforme en 12 avril 2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.
Qu'aurais-je oublié ?
Merci pour votre aide
Cordialement,
F.
Comme cela c'est bon!
Private Sub CommandButton3_Click()
Cells(2, 2).Value = detail.madate
Unload Me
End Sub
Private Sub UserForm_Activate()
detail.madate.Value = CDate(Cells(2, 2))
End Sub
--
Fredo P.
"FdeCourt" <fdecourt@gmail.com> a écrit dans le message de news:
c3f770ec-898f-48c7-bf51-23a64e01da2a@g26g2000yqe.googlegroups.com...
Dans mon code réèl, j'ai bien déclaré ma variable comme étant une
date.
On 27 nov, 18:02, "michdenis" <michde...@hotmail.com> wrote:
Bonjour,
Ok, ta date est dans une cellule dont excel reconnaît le format comme
étant une date.
Lorsque tu récupères cette valeur dans VBA,
pends-tu le soin de définir le "type" de ta variable
Dim D as date
D = Range("A1")
Ou tu pourrais utiliser ceci :
Tu récupères la date de la cellule A1 par sa valeur numérique
en utilisant une variable de typ Long et la propriété .Value2
de l'objet Range.
Dim D As Long
D = Range("A1").Value2
D = 40144 si en A1 il y a la date d'aujourd'hui
Et pour retourner la valeur de la variable D sous forme de date
Range("A2").value = cdate(D)
Sinon, donne un exemple de la problématique que tu rencontres.
"FdeCourt" <fdeco...@gmail.com> a écrit dans le message de groupe de
discussion :
8296c08c-0543-4a89-b0e2-d53504f50...@o10g2000yqa.googlegroups.com...
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules.
Mon problème est que l'interpretation de la date me semble être
différent entre ce qui est saisie dans la cellule et ce que récupère
la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien
considéré comme une date (valeur numérique 40151). Par contre, quand
je cherche à manipuler cette valeur, elle se transforme en 12 avril
2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA
Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.
Comme cela c'est bon! Private Sub CommandButton3_Click() Cells(2, 2).Value = detail.madate Unload Me End Sub
Private Sub UserForm_Activate() detail.madate.Value = CDate(Cells(2, 2)) End Sub
--
Fredo P.
"FdeCourt" a écrit dans le message de news:
Dans mon code réèl, j'ai bien déclaré ma variable comme étant une date.
On 27 nov, 18:02, "michdenis" wrote:
Bonjour,
Ok, ta date est dans une cellule dont excel reconnaît le format comme étant une date.
Lorsque tu récupères cette valeur dans VBA, pends-tu le soin de définir le "type" de ta variable
Dim D as date D = Range("A1")
Ou tu pourrais utiliser ceci : Tu récupères la date de la cellule A1 par sa valeur numérique en utilisant une variable de typ Long et la propriété .Value2 de l'objet Range.
Dim D As Long D = Range("A1").Value2 D = 40144 si en A1 il y a la date d'aujourd'hui
Et pour retourner la valeur de la variable D sous forme de date Range("A2").value = cdate(D)
Sinon, donne un exemple de la problématique que tu rencontres.
"FdeCourt" a écrit dans le message de groupe de discussion :
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules. Mon problème est que l'interpretation de la date me semble être différent entre ce qui est saisie dans la cellule et ce que récupère la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien considéré comme une date (valeur numérique 40151). Par contre, quand je cherche à manipuler cette valeur, elle se transforme en 12 avril 2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.
Qu'aurais-je oublié ?
Merci pour votre aide
Cordialement,
F.
FdeCourt
Merci à tous de vous pencher sur mon problème. Je bosse actuellement pour une boite franco française, donc peut de chance que des anglo-saxons soit impactés !!!!
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque mon ordinateur est configuré pour des dates dans ce format. Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière en prenant en compte la configuration de l'ordinateur (qui est à mon avis la meilleure solution pour s'assurer que l'utilisateur utilise le bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en programmation quelconque, donc la rigueur, dans mes programmes, elle est pas vraiment au top (je dirais même qu'il n'y a que moi qui me comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne effectivement ainsi que celle de Michdenis (que j'utiliserai surement pour m'assurer dans mes futurs bricolages les dates seront correctement interprétée sans que j'ai à vous importuner)
Encore merci à tous
Cordialement,
F.
Merci à tous de vous pencher sur mon problème.
Je bosse actuellement pour une boite franco française, donc peut de
chance que des anglo-saxons soit impactés !!!!
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait
normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel
saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque
mon ordinateur est configuré pour des dates dans ce format.
Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière
en prenant en compte la configuration de l'ordinateur (qui est à mon
avis la meilleure solution pour s'assurer que l'utilisateur utilise le
bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en
programmation quelconque, donc la rigueur, dans mes programmes, elle
est pas vraiment au top (je dirais même qu'il n'y a que moi qui me
comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne
effectivement ainsi que celle de Michdenis (que j'utiliserai surement
pour m'assurer dans mes futurs bricolages les dates seront
correctement interprétée sans que j'ai à vous importuner)
Merci à tous de vous pencher sur mon problème. Je bosse actuellement pour une boite franco française, donc peut de chance que des anglo-saxons soit impactés !!!!
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque mon ordinateur est configuré pour des dates dans ce format. Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière en prenant en compte la configuration de l'ordinateur (qui est à mon avis la meilleure solution pour s'assurer que l'utilisateur utilise le bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en programmation quelconque, donc la rigueur, dans mes programmes, elle est pas vraiment au top (je dirais même qu'il n'y a que moi qui me comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne effectivement ainsi que celle de Michdenis (que j'utiliserai surement pour m'assurer dans mes futurs bricolages les dates seront correctement interprétée sans que j'ai à vous importuner)
Encore merci à tous
Cordialement,
F.
Misange
Bonjour
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque mon ordinateur est configuré pour des dates dans ce format. Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière
Deux raisons à cela : 1) VBA est en anglais. Du coup toutes les formules qu'on entre dans VBA sont mises à la sauce anglophone: noms de fonctions en anglais, séparateur d'arguments , et non le ; ... Et pas défaut, interprétation des dates au format amerloque. 2) Mais surtout, tu entres tes données dans un TEXTbox si j'ai bien suivi (j'ai lu vite). Dans un TEXTbix par définition, c'est du texte, pas un nombre. C'est comme si tu écrivais '1/1/2009 dans une cellule de la feuille. Dans ce cas là tu forces excel à considérer que c'est du texte et à NE PAS interpréter le contenu comme une date. Heureusement que cette possiblité existe d'ailleurs car c'est assez fréquent de devoir indiquer des références par exemple qui ressemblent à des dates.
Pour éviter toute erreur dans la saisie de dates dans un formulaire, tu peux soit utiliser un calendrier (tu trouveras plein d'exemples sur excelabo, avec le control calendar ou avec des solutions complètement indépendantes de celui-ci), soit faire trois textbox, 1 pour le jour, un pour le mois, un pour l'année. Tu peux alors faire pour chaque textbox une vérification de la validité de ce qui est entré. Si tu veux vraiment que les dates soient saisies comme 2/3/2010 et que tu es SUR qu'il n'y a aucune ambiguité pour personne sur l'ordre jour mois, tu peux utiliser la fonction split en VBA pour récupérer jour mois année et remettre tout ça dans l'ordre :
rien ne t'empêches d'ailleurs de vérifier que données(1) (le mois) est compris entre 1 et 12, et données(0) entre 1 et 31.
Misange Excelabo.net
en prenant en compte la configuration de l'ordinateur (qui est à mon avis la meilleure solution pour s'assurer que l'utilisateur utilise le bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en programmation quelconque, donc la rigueur, dans mes programmes, elle est pas vraiment au top (je dirais même qu'il n'y a que moi qui me comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne effectivement ainsi que celle de Michdenis (que j'utiliserai surement pour m'assurer dans mes futurs bricolages les dates seront correctement interprétée sans que j'ai à vous importuner)
Encore merci à tous
Cordialement,
F.
Bonjour
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait
normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel
saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque
mon ordinateur est configuré pour des dates dans ce format.
Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière
Deux raisons à cela :
1) VBA est en anglais. Du coup toutes les formules qu'on entre dans VBA
sont mises à la sauce anglophone: noms de fonctions en anglais,
séparateur d'arguments , et non le ; ... Et pas défaut, interprétation
des dates au format amerloque.
2) Mais surtout, tu entres tes données dans un TEXTbox si j'ai bien
suivi (j'ai lu vite). Dans un TEXTbix par définition, c'est du texte,
pas un nombre. C'est comme si tu écrivais '1/1/2009 dans une cellule de
la feuille. Dans ce cas là tu forces excel à considérer que c'est du
texte et à NE PAS interpréter le contenu comme une date. Heureusement
que cette possiblité existe d'ailleurs car c'est assez fréquent de
devoir indiquer des références par exemple qui ressemblent à des dates.
Pour éviter toute erreur dans la saisie de dates dans un formulaire, tu
peux soit utiliser un calendrier (tu trouveras plein d'exemples sur
excelabo, avec le control calendar ou avec des solutions complètement
indépendantes de celui-ci), soit faire trois textbox, 1 pour le jour, un
pour le mois, un pour l'année. Tu peux alors faire pour chaque textbox
une vérification de la validité de ce qui est entré.
Si tu veux vraiment que les dates soient saisies comme 2/3/2010 et que
tu es SUR qu'il n'y a aucune ambiguité pour personne sur l'ordre jour
mois, tu peux utiliser la fonction split en VBA pour récupérer jour mois
année et remettre tout ça dans l'ordre :
rien ne t'empêches d'ailleurs de vérifier que données(1) (le mois) est
compris entre 1 et 12, et données(0) entre 1 et 31.
Misange
Excelabo.net
en prenant en compte la configuration de l'ordinateur (qui est à mon
avis la meilleure solution pour s'assurer que l'utilisateur utilise le
bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en
programmation quelconque, donc la rigueur, dans mes programmes, elle
est pas vraiment au top (je dirais même qu'il n'y a que moi qui me
comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne
effectivement ainsi que celle de Michdenis (que j'utiliserai surement
pour m'assurer dans mes futurs bricolages les dates seront
correctement interprétée sans que j'ai à vous importuner)
Cependant ce que je trouve bizarre, mais qui est peut être tout à fait normal, c'est que lorsque je saisie dans une cellule 01/01/2009, Excel saura qu'il s'agit du premier janvier 2009. Ce qui m'arrange puisque mon ordinateur est configuré pour des dates dans ce format. Par contre, pourquoi est-ce que VBA ne réagit pas de la même manière
Deux raisons à cela : 1) VBA est en anglais. Du coup toutes les formules qu'on entre dans VBA sont mises à la sauce anglophone: noms de fonctions en anglais, séparateur d'arguments , et non le ; ... Et pas défaut, interprétation des dates au format amerloque. 2) Mais surtout, tu entres tes données dans un TEXTbox si j'ai bien suivi (j'ai lu vite). Dans un TEXTbix par définition, c'est du texte, pas un nombre. C'est comme si tu écrivais '1/1/2009 dans une cellule de la feuille. Dans ce cas là tu forces excel à considérer que c'est du texte et à NE PAS interpréter le contenu comme une date. Heureusement que cette possiblité existe d'ailleurs car c'est assez fréquent de devoir indiquer des références par exemple qui ressemblent à des dates.
Pour éviter toute erreur dans la saisie de dates dans un formulaire, tu peux soit utiliser un calendrier (tu trouveras plein d'exemples sur excelabo, avec le control calendar ou avec des solutions complètement indépendantes de celui-ci), soit faire trois textbox, 1 pour le jour, un pour le mois, un pour l'année. Tu peux alors faire pour chaque textbox une vérification de la validité de ce qui est entré. Si tu veux vraiment que les dates soient saisies comme 2/3/2010 et que tu es SUR qu'il n'y a aucune ambiguité pour personne sur l'ordre jour mois, tu peux utiliser la fonction split en VBA pour récupérer jour mois année et remettre tout ça dans l'ordre :
rien ne t'empêches d'ailleurs de vérifier que données(1) (le mois) est compris entre 1 et 12, et données(0) entre 1 et 31.
Misange Excelabo.net
en prenant en compte la configuration de l'ordinateur (qui est à mon avis la meilleure solution pour s'assurer que l'utilisateur utilise le bon format, puisque c'est celui utilisé par son ordinateur)
Je bricole et m'amuse avec Excel, n'ayant aucune compétence en programmation quelconque, donc la rigueur, dans mes programmes, elle est pas vraiment au top (je dirais même qu'il n'y a que moi qui me comprend !)... mais je m'améliore !
Pour en revenir à mon problème, la solution de Fredo P. fonctionne effectivement ainsi que celle de Michdenis (que j'utiliserai surement pour m'assurer dans mes futurs bricolages les dates seront correctement interprétée sans que j'ai à vous importuner)
Encore merci à tous
Cordialement,
F.
Alain
Le problème est que ta boite texte reçois la date au format américain et en plus tu remet la date dans la cellule en format texte plutôt que date... Pour régler le problème et faire que ca fonctionne peut importe les paramètre régionaux il suffit d'employer les fonctions de conversion CStr() et CDate() La fonction CStr() te retournera la date au format texte selon tes paramètres régionaux (jj/mm/aaaa dans ton cas) et la fonction CDate() convertira la date texte en format date en tenant compte des paramètre régionaux.
Pour mettre la valeur texte de la cellule date dans ton formulaire: DateFormulaire = CStr(DateCellule)
Pour mettre la valeur date de ton formulaire dans la cellule date: DateCellule = CDate(DateFormulaire)
De cette façon ça va fonctionner peut importe les paramètre régionaux...
"FdeCourt" wrote in message news:
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules. Mon problème est que l'interpretation de la date me semble être différent entre ce qui est saisie dans la cellule et ce que récupère la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien considéré comme une date (valeur numérique 40151). Par contre, quand je cherche à manipuler cette valeur, elle se transforme en 12 avril 2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.
Qu'aurais-je oublié ?
Merci pour votre aide
Cordialement,
F.
Le problème est que ta boite texte reçois la date au format américain et en
plus tu remet la date dans la cellule en format texte plutôt que date...
Pour régler le problème et faire que ca fonctionne peut importe les
paramètre régionaux il suffit d'employer les fonctions de conversion CStr()
et CDate()
La fonction CStr() te retournera la date au format texte selon tes
paramètres régionaux (jj/mm/aaaa dans ton cas) et la fonction CDate()
convertira la date texte en format date en tenant compte des paramètre
régionaux.
Pour mettre la valeur texte de la cellule date dans ton formulaire:
DateFormulaire = CStr(DateCellule)
Pour mettre la valeur date de ton formulaire dans la cellule date:
DateCellule = CDate(DateFormulaire)
De cette façon ça va fonctionner peut importe les paramètre régionaux...
"FdeCourt" <fdecourt@gmail.com> wrote in message
news:8296c08c-0543-4a89-b0e2-d53504f50504@o10g2000yqa.googlegroups.com...
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules.
Mon problème est que l'interpretation de la date me semble être
différent entre ce qui est saisie dans la cellule et ce que récupère
la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien
considéré comme une date (valeur numérique 40151). Par contre, quand
je cherche à manipuler cette valeur, elle se transforme en 12 avril
2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA
Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.
Le problème est que ta boite texte reçois la date au format américain et en plus tu remet la date dans la cellule en format texte plutôt que date... Pour régler le problème et faire que ca fonctionne peut importe les paramètre régionaux il suffit d'employer les fonctions de conversion CStr() et CDate() La fonction CStr() te retournera la date au format texte selon tes paramètres régionaux (jj/mm/aaaa dans ton cas) et la fonction CDate() convertira la date texte en format date en tenant compte des paramètre régionaux.
Pour mettre la valeur texte de la cellule date dans ton formulaire: DateFormulaire = CStr(DateCellule)
Pour mettre la valeur date de ton formulaire dans la cellule date: DateCellule = CDate(DateFormulaire)
De cette façon ça va fonctionner peut importe les paramètre régionaux...
"FdeCourt" wrote in message news:
Bonjour,
J'ai des macros qui utilisent des dates insérer dans des cellules. Mon problème est que l'interpretation de la date me semble être différent entre ce qui est saisie dans la cellule et ce que récupère la macro.
Par exemple : je saisie 04/12/2009 dans une cellule, qui est bien considéré comme une date (valeur numérique 40151). Par contre, quand je cherche à manipuler cette valeur, elle se transforme en 12 avril 2009 et non plus 4 décembre 2009.
Mes options régionales sont bien à JJ/MM/AAAA Le format de mes cellules est bien JJ/MM/AAAA
et pourtant dans VBA, les jours et les mois sont inversés.