Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Format date différents entre VBE et Excel (inversion JJ et MM)

18 réponses
Avatar
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.

Qu'aurais-je oubli=E9 ?

Merci pour votre aide

Cordialement,

F.

10 réponses

1 2
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

VBA est régit par les règles anglo-saxonnes, comme le point séparateur
décimal, et non la virgule. Il faut formater la sortie avec la fonction
format.


Cdt, Blaise
---- ---- ----


"FdeCourt" a écrit dans le message de 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.
Avatar
michdenis
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.
Avatar
FdeCourt
Je ne pense pas que ce soit le problème.
Dans le fichier joint.
Cliquer sur le bouton Bouton 1
Puis dans le userform qui se lance, cliquer sur OK sans rien toucher.
Le faire au moins deux fois.

Chez moi, dans un cas ca passe à 04/12/2009, puis 12/04/2009, puis
04/12/2009.

Bien sur il ne faut rien changer, si ce n'est cliquer sur les boutons.

Le code VBA que j'utilise est ultra simple :
3 procédures :

Private Sub CommandButton3_Click()
Cells(2, 2).Value = detail.madate.Value
Unload Me
End Sub

Private Sub UserForm_Activate()
detail.madate.Value = Cells(2, 2).Value
End Sub

Sub test()
detail.Show
End Sub

http://www.world-is-yours.com/tools/share/details.php?iòf4e658-25d0-44b 3-980b-03eadbd22208

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "Blaise Cacramp" wrote:
Selon : Bonjour ou bonsoir

VBA est régit par les règles anglo-saxonnes, comme le point séparat eur
décimal, et non la virgule.  Il faut formater la sortie avec la fonct ion
format.

Cdt, Blaise
----   ----   ----

"FdeCourt" a écrit dans le message de 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èr e
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, quan d
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.


Avatar
FdeCourt
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 di scussion :

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èr e
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, quan d
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.


Avatar
FdeCourt
Je rejoins un fichier dans lequel j'ai suivi plusieurs fois la
procédure décrite ci dessus, mais en sauvegardant mon résultant dans
la cellule du dessous :

http://www.world-is-yours.com/tools/share/dld.php?iT7a179e-9229-407e-8e c3-627e5ee69051

J'ai juste modifié le code ainsi :

Private Sub CommandButton3_Click()
Cells(Cells(65535, 2).End(xlUp).Row + 1, 2).Value =
detail.madate.Value
Unload Me
End Sub

Private Sub UserForm_Activate()
detail.madate.Value = Cells(Cells(65535, 2).End(xlUp).Row, 2).Value
End Sub

Merci pour votre aide

Cordialement,

F.
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Private Sub CommandButton3_Click()
Cells(2, 2).Value = CDate(detail.madate.Value)
Unload Me
End Sub



Cdt, Blaise
---- ---- ----


"FdeCourt" a écrit dans le message de news:

Je ne pense pas que ce soit le problème.
Dans le fichier joint.
Cliquer sur le bouton Bouton 1
Puis dans le userform qui se lance, cliquer sur OK sans rien toucher.
Le faire au moins deux fois.

Chez moi, dans un cas ca passe à 04/12/2009, puis 12/04/2009, puis
04/12/2009.

Bien sur il ne faut rien changer, si ce n'est cliquer sur les boutons.

Le code VBA que j'utilise est ultra simple :
3 procédures :

Private Sub CommandButton3_Click()
Cells(2, 2).Value = detail.madate.Value
Unload Me
End Sub

Private Sub UserForm_Activate()
detail.madate.Value = Cells(2, 2).Value
End Sub

Sub test()
detail.Show
End Sub

http://www.world-is-yours.com/tools/share/details.php?iòf4e658-25d0-44b3-980b-03eadbd22208

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "Blaise Cacramp" wrote:
Selon : Bonjour ou bonsoir

VBA est régit par les règles anglo-saxonnes, comme le point séparateur
décimal, et non la virgule. Il faut formater la sortie avec la fonction
format.

Cdt, Blaise
---- ---- ----

"FdeCourt" a écrit dans le message de 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.


Avatar
FdeCourt
Je précise que je suis sous Windows 2000 et Office 2000.

Je viens de tester en changeant dans les options régionales le format
en MM/jj/aaaa

et la dans Excel, ce format est correctement conservé lorsque je
clique plusieurs fois sur le bouton de mon classeur test (mais bien
sur pas au format que je souhaite)

Par contre, dès que je repasse en jj/MM/aaaa cela ne fonctionne plus.

Il y a quand même un truc bizarre
Avatar
FdeCourt
Blaise,

En l'occurence, plutot bonsoir.

Mon problème est que les cellules seront renseignées par des
utilisateurs.
Déjà qu'ils ne comprennent rient, si en plus je leur rajoute la
gymnastique mentale de devoir intervertir mois et jours..... ils ne
vons jamais le renseigner correctement.

Juste pour savoir, est-ce que le même comportement est reproductible
sur vos PC ?

Merci pour le coup de main

Cordialement,

F.
On 27 nov, 18:23, "Blaise Cacramp" wrote:
Selon : Bonjour ou bonsoir

Private Sub CommandButton3_Click()
Cells(2, 2).Value = CDate(detail.madate.Value)
Unload Me
End Sub

Cdt, Blaise
----   ----   ----

"FdeCourt" a écrit dans le message de news:

Je ne pense pas que ce soit le problème.
Dans le fichier joint.
Cliquer sur le bouton Bouton 1
Puis dans le userform qui se lance, cliquer sur OK sans rien toucher.
Le faire au moins deux fois.

Chez moi, dans un cas ca passe à 04/12/2009, puis 12/04/2009, puis
04/12/2009.

Bien sur il ne faut rien changer, si ce n'est cliquer sur les boutons.

Le code VBA que j'utilise est ultra simple :
3 procédures :

Private Sub CommandButton3_Click()
Cells(2, 2).Value = detail.madate.Value
Unload Me
End Sub

Private Sub UserForm_Activate()
detail.madate.Value = Cells(2, 2).Value
End Sub

Sub test()
detail.Show
End Sub

http://www.world-is-yours.com/tools/share/details.php?iòf4e658-25d0.. .

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "Blaise Cacramp" wrote:



> Selon : Bonjour ou bonsoir

> VBA est régit par les règles anglo-saxonnes, comme le point sépar ateur
> décimal, et non la virgule. Il faut formater la sortie avec la foncti on
> format.

> Cdt, Blaise
> ---- ---- ----

> "FdeCourt" a écrit dans le message de 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, qu and
> 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.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Blaise Cacramp
bonsoir donc

Le comportement était de fait identique (et même marrant), sinon je n'aurais
pas trouvé la solution : Cdate()


Cdt, Blaise
---- ---- ----


"FdeCourt" a écrit dans le message de news:

Blaise,

En l'occurence, plutot bonsoir.

Mon problème est que les cellules seront renseignées par des
utilisateurs.
Déjà qu'ils ne comprennent rient, si en plus je leur rajoute la
gymnastique mentale de devoir intervertir mois et jours..... ils ne
vons jamais le renseigner correctement.

Juste pour savoir, est-ce que le même comportement est reproductible
sur vos PC ?

Merci pour le coup de main

Cordialement,

F.
On 27 nov, 18:23, "Blaise Cacramp" wrote:
Selon : Bonjour ou bonsoir

Private Sub CommandButton3_Click()
Cells(2, 2).Value = CDate(detail.madate.Value)
Unload Me
End Sub

Cdt, Blaise
---- ---- ----

"FdeCourt" a écrit dans le message de news:

Je ne pense pas que ce soit le problème.
Dans le fichier joint.
Cliquer sur le bouton Bouton 1
Puis dans le userform qui se lance, cliquer sur OK sans rien toucher.
Le faire au moins deux fois.

Chez moi, dans un cas ca passe à 04/12/2009, puis 12/04/2009, puis
04/12/2009.

Bien sur il ne faut rien changer, si ce n'est cliquer sur les boutons.

Le code VBA que j'utilise est ultra simple :
3 procédures :

Private Sub CommandButton3_Click()
Cells(2, 2).Value = detail.madate.Value
Unload Me
End Sub

Private Sub UserForm_Activate()
detail.madate.Value = Cells(2, 2).Value
End Sub

Sub test()
detail.Show
End Sub

http://www.world-is-yours.com/tools/share/details.php?iòf4e658-25d0...

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "Blaise Cacramp" wrote:



> Selon : Bonjour ou bonsoir

> VBA est régit par les règles anglo-saxonnes, comme le point séparateur
> décimal, et non la virgule. Il faut formater la sortie avec la fonction
> format.

> Cdt, Blaise
> ---- ---- ----

> "FdeCourt" a écrit dans le message de 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.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
isabelle
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
1 2