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

Le
FdeCourt
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Blaise Cacramp
Le #20645321
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"
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.
michdenis
Le #20645531
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"
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
Le #20645521
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"
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"
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.


FdeCourt
Le #20646611
Dans mon code réèl, j'ai bien déclaré ma variable comme étant une
date.


On 27 nov, 18:02, "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"
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.


FdeCourt
Le #20645501
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.
Blaise Cacramp
Le #20645701
Selon : Bonjour ou bonsoir

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



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


"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-44b3-980b-03eadbd22208

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "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"
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
Le #20646761
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
FdeCourt
Le #20646891
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"
Selon : Bonjour ou bonsoir

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

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

"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.. .

Merci pour votre aide

Cordialement,

F.

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


> 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" >
> 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 -


Blaise Cacramp
Le #20647081
bonsoir donc

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


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


"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"
Selon : Bonjour ou bonsoir

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

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

"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...

Merci pour votre aide

Cordialement,

F.

On 27 nov, 17:49, "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" >
> 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 -


isabelle
Le #20645861
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
Publicité
Poster une réponse
Anonyme