OVH Cloud OVH Cloud

Calendar -> mystère ???

8 réponses
Avatar
le_troll
Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de le voir,
traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au 30 ???
Qui a une idée ?

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !

8 réponses

Avatar
le_troll
Encore plus fort sur calendar, en fait je l'appelle au lancement par
Call Command2_Click

Et le 31 devient 30, et se positionne ainsi sur calendar...

Mais si je demande la date du jour avec le bouton
Command2_Click
Cette fois j'ai la bonne date (31)
???????????????????????????

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


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

Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de le


voir,
traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au 30 ???
Qui a une idée ?

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !






Avatar
ng
Salut,

Essaye plutot de changer l'ordre de définition de ts propriétés :

Calendar1.Year = Year(Date)
Calendar1.Month = Month(Date)
Calendar1.Day = Day(Date)

Car peut être que le 31 n'existe pas dans le mois qui était definir (par
défaut) avant dans ton code, là au moins c'est clair.

Mais le mieux reste de faire ceci :

Calendar1.Value = Date

MsgBox Day(Date) & vbLf & Calendar1.Day


On est pas sous unix :) Le retrour à la ligne sous windows c'est vbCrLf
sinon pour être sur d'avoir le bon en fonction du système utilise vbNewLine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de le
voir, traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au 30
??? Qui a une idée ?


Avatar
ng
Salut,

Oui parce que cette fois le mois est bien définit avant le jour donc on est
sûr que le 31 existe donc ca marche :)

Call Command2_Click


A eviter pour séparer au maximum ton code de l'interface, utilise plutot une
Sub commune qui sera appelée par Command2_Click et par le Form_Load.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Encore plus fort sur calendar, en fait je l'appelle au lancement par
Call Command2_Click

Et le 31 devient 30, et se positionne ainsi sur calendar...

Mais si je demande la date du jour avec le bouton
Command2_Click
Cette fois j'ai la bonne date (31)
???????????????????????????


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

Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de
le voir, traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au
30 ??? Qui a une idée ?

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !




Avatar
le_troll
Merci Nicolas,

Je ne comprends pas trop l'explication, effectivement en partant de
"year" ça marche, il a quoi de différent le dernier jour???

Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre oui,
pour les autres (textBox, etc...) = vbCRlf...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


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

Salut,

Essaye plutot de changer l'ordre de définition de ts propriétés :

Calendar1.Year = Year(Date)
Calendar1.Month = Month(Date)
Calendar1.Day = Day(Date)

Car peut être que le 31 n'existe pas dans le mois qui était definir (par
défaut) avant dans ton code, là au moins c'est clair.

Mais le mieux reste de faire ceci :

Calendar1.Value = Date

> MsgBox Day(Date) & vbLf & Calendar1.Day
On est pas sous unix :) Le retrour à la ligne sous windows c'est vbCrLf
sinon pour être sur d'avoir le bon en fonction du système utilise


vbNewLine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
> Bonjour,
>
> J'ai ce jour un mystère avec l'objet calendar qui, je viens de le
> voir, traduit le "31" en "30" (numéro du jour), voici mon code:
>
> ' ' ' Date système = 31/08/2004
> Calendar1.Day = Day(Date)
> Calendar1.Month = Month(Date)
> Calendar1.Year = Year(Date)
>
> MsgBox Day(Date) & vbLf & Calendar1.Day
> REPONSE
> 31
> 30
>
> MsgBox Calendar1.Value
> REPONSE
> 30/08/2004
>
> Calendar1.Value = Now
> MsgBox Calendar1.Value
> REPONSE
> 31/08/04
>
> Je ne sais pourquoi mais les 31 sont restituée par calendar au 30
> ??? Qui a une idée ?




Avatar
le_troll
SUITE---> Oui tu veux dire que VB ne sait pas trop où commence le jour,
pourtant la date est séparé par des slashs, il devrait l'identifier???
jj/mm/aaaa
Si je mets xÚy(date)
la chaîne date système étant formatée, il prend les deux 1er octets de date,
ça devrait marcher, car là ça voudrait dire qu'il ne prend que le "3" de
"31", mais s'il faisait ça, ça devrait donner "03", les "0" non
significatifs vont devant, ou alors vb lit la chaîne à l'envers (en fait il
part des secondes, voir des 1.000eme je crois), mais dans quel sens, bon,
bref, pas clair, ça sent le bug, car si c'était ça, sur le 10, le 20, ça
devrait faire pareil, certes c'est le dernier jour, mais il a quoi de
spécial le dernier jour, je ne vois pas le rapport, quand vb lit, il ne
réfléchit pas à savoir si c'est le dernier jour (pour faire quoi?), à "day"
il recopie les 2 premiers octets, ou encore, lit jusqu'au 1er slash la date
système (ici), non???

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"le_troll" a écrit dans le message de news:
#
Merci Nicolas,

Je ne comprends pas trop l'explication, effectivement en partant de
"year" ça marche, il a quoi de différent le dernier jour???

Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre oui,
pour les autres (textBox, etc...) = vbCRlf...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


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

> Salut,
>
> Essaye plutot de changer l'ordre de définition de ts propriétés :
>
> Calendar1.Year = Year(Date)
> Calendar1.Month = Month(Date)
> Calendar1.Day = Day(Date)
>
> Car peut être que le 31 n'existe pas dans le mois qui était definir (par
> défaut) avant dans ton code, là au moins c'est clair.
>
> Mais le mieux reste de faire ceci :
>
> Calendar1.Value = Date
>
> > MsgBox Day(Date) & vbLf & Calendar1.Day
> On est pas sous unix :) Le retrour à la ligne sous windows c'est vbCrLf
> sinon pour être sur d'avoir le bon en fonction du système utilise
vbNewLine.
>
> --
> Nicolas G.
> FAQ VB : http://faq.vb.free.fr
> API Guide : http://www.allapi.net
> Google Groups : http://groups.google.fr/
> MZ-Tools : http://www.mztools.com/
>
>
> le_troll wrote:
> > Bonjour,
> >
> > J'ai ce jour un mystère avec l'objet calendar qui, je viens de le
> > voir, traduit le "31" en "30" (numéro du jour), voici mon code:
> >
> > ' ' ' Date système = 31/08/2004
> > Calendar1.Day = Day(Date)
> > Calendar1.Month = Month(Date)
> > Calendar1.Year = Year(Date)
> >
> > MsgBox Day(Date) & vbLf & Calendar1.Day
> > REPONSE
> > 31
> > 30
> >
> > MsgBox Calendar1.Value
> > REPONSE
> > 30/08/2004
> >
> > Calendar1.Value = Now
> > MsgBox Calendar1.Value
> > REPONSE
> > 31/08/04
> >
> > Je ne sais pourquoi mais les 31 sont restituée par calendar au 30
> > ??? Qui a une idée ?
>
>




Avatar
ng
Salut,

C'est trèes simple en fait :

Quand tu démarres ton appli, avt de définir tes propriétés, l'objet calendar
est forcément sur une date, admettons que ce soit le 15 février 2004
(pourquoi pas :)).
Donc toi t'arrives tu changes le jour :

Calendar1.Day = Day(Date)

Aujourd'hui on est le 31 or il n'existe pas de 31 en fevrier 2004 puisqu'on
est tjrs en fevrier 2004...

Le controle tente donc de se mettre sur 31/02/2004 ms ce n'existe pas, il
change donc (c'est normal) la date vers 29/02/2004 qui lui existe

Ensuite tu changes le mois et l'année ca ca marche mais tu te retrouves avec
la date 29/08/2004 à la place de 31/08/2004.

Mais le mieux c'est qd mm de définir ta date comme ceci :

Calendar1.Value = Date

C'est plus rapide et plus propre.


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Merci Nicolas,

Je ne comprends pas trop l'explication, effectivement en partant
de "year" ça marche, il a quoi de différent le dernier jour???

Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre
oui, pour les autres (textBox, etc...) = vbCRlf...


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

Salut,

Essaye plutot de changer l'ordre de définition de ts propriétés :

Calendar1.Year = Year(Date)
Calendar1.Month = Month(Date)
Calendar1.Day = Day(Date)

Car peut être que le 31 n'existe pas dans le mois qui était definir
(par défaut) avant dans ton code, là au moins c'est clair.

Mais le mieux reste de faire ceci :

Calendar1.Value = Date

MsgBox Day(Date) & vbLf & Calendar1.Day


On est pas sous unix :) Le retrour à la ligne sous windows c'est
vbCrLf sinon pour être sur d'avoir le bon en fonction du système
utilise vbNewLine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de
le voir, traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au
30 ??? Qui a une idée ?






Avatar
ng
Ah oui j'oubliais...

Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre
oui, pour les autres (textBox, etc...) = vbCRlf...


Ce n'est pas parce que le msgbox est tolérant qu'il faut en abuser, sous
Windows le retour à la ligne c'est CR & LF n'importe où, même dasn les
msgbox.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Merci Nicolas,

Je ne comprends pas trop l'explication, effectivement en partant
de "year" ça marche, il a quoi de différent le dernier jour???

Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre
oui, pour les autres (textBox, etc...) = vbCRlf...


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

Salut,

Essaye plutot de changer l'ordre de définition de ts propriétés :

Calendar1.Year = Year(Date)
Calendar1.Month = Month(Date)
Calendar1.Day = Day(Date)

Car peut être que le 31 n'existe pas dans le mois qui était definir
(par défaut) avant dans ton code, là au moins c'est clair.

Mais le mieux reste de faire ceci :

Calendar1.Value = Date

MsgBox Day(Date) & vbLf & Calendar1.Day


On est pas sous unix :) Le retrour à la ligne sous windows c'est
vbCrLf sinon pour être sur d'avoir le bon en fonction du système
utilise vbNewLine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
Bonjour,

J'ai ce jour un mystère avec l'objet calendar qui, je viens de
le voir, traduit le "31" en "30" (numéro du jour), voici mon code:

' ' ' Date système = 31/08/2004
Calendar1.Day = Day(Date)
Calendar1.Month = Month(Date)
Calendar1.Year = Year(Date)

MsgBox Day(Date) & vbLf & Calendar1.Day
REPONSE
31
30

MsgBox Calendar1.Value
REPONSE
30/08/2004

Calendar1.Value = Now
MsgBox Calendar1.Value
REPONSE
31/08/04

Je ne sais pourquoi mais les 31 sont restituée par calendar au
30 ??? Qui a une idée ?






Avatar
le_troll
Ah, ok, là ça tient ton explication...
VbLf, je n'ai pas de problème avec les objets que je connais très bien, je
sais ce qu'ils veulent, je ne mets ça que pour le boites, je ne confonds
pas, et si je me plante (textBoxe=CrLf), immédiatement je pense et au
"VbCrLf" et au "mutilines" :o)

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


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

Ah oui j'oubliais...

> Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre
> oui, pour les autres (textBox, etc...) = vbCRlf...
Ce n'est pas parce que le msgbox est tolérant qu'il faut en abuser, sous
Windows le retour à la ligne c'est CR & LF n'importe où, même dasn les
msgbox.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


le_troll wrote:
> Merci Nicolas,
>
> Je ne comprends pas trop l'explication, effectivement en partant
> de "year" ça marche, il a quoi de différent le dernier jour???
>
> Sinon "vblf" c'est bon pour le MsgBox, ça lui suffit, par contre
> oui, pour les autres (textBox, etc...) = vbCRlf...
>
>
> "ng" a écrit dans le message de news:
>
>> Salut,
>>
>> Essaye plutot de changer l'ordre de définition de ts propriétés :
>>
>> Calendar1.Year = Year(Date)
>> Calendar1.Month = Month(Date)
>> Calendar1.Day = Day(Date)
>>
>> Car peut être que le 31 n'existe pas dans le mois qui était definir
>> (par défaut) avant dans ton code, là au moins c'est clair.
>>
>> Mais le mieux reste de faire ceci :
>>
>> Calendar1.Value = Date
>>
>>> MsgBox Day(Date) & vbLf & Calendar1.Day
>> On est pas sous unix :) Le retrour à la ligne sous windows c'est
>> vbCrLf sinon pour être sur d'avoir le bon en fonction du système
>> utilise vbNewLine.
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>>
>> le_troll wrote:
>>> Bonjour,
>>>
>>> J'ai ce jour un mystère avec l'objet calendar qui, je viens de
>>> le voir, traduit le "31" en "30" (numéro du jour), voici mon code:
>>>
>>> ' ' ' Date système = 31/08/2004
>>> Calendar1.Day = Day(Date)
>>> Calendar1.Month = Month(Date)
>>> Calendar1.Year = Year(Date)
>>>
>>> MsgBox Day(Date) & vbLf & Calendar1.Day
>>> REPONSE
>>> 31
>>> 30
>>>
>>> MsgBox Calendar1.Value
>>> REPONSE
>>> 30/08/2004
>>>
>>> Calendar1.Value = Now
>>> MsgBox Calendar1.Value
>>> REPONSE
>>> 31/08/04
>>>
>>> Je ne sais pourquoi mais les 31 sont restituée par calendar au
>>> 30 ??? Qui a une idée ?