[Déplacé .Net --> VBA encore et encore et encore] Année bissextile

Résolu
andy331 Messages postés 45 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 juin 2010 - 5 févr. 2010 à 10:15
andy331 Messages postés 45 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 juin 2010 - 5 févr. 2010 à 12:16
Bonjour tout le monde!!
J'aimerais savoir pourquoi mon année bissextile vaut tout le temps Faux
En faite je suis dans une TextboxDate (ou je rentre mon jour,mois année)
Et voici le code que j'insere dans ma texteBox:

Dim IsBissextile As Boolean


'Les conditions pour avoir une année bisextile sont les suivantes:
' - année divisible par 4 : année bisextile
' - exception : année divisible par 100 : année non bisextile
' - exception de l'exception : année divisible par 400 : année bisextile

If Year(maDate) Mod 4 0 And (Year(maDate) Mod 100 <> 0 Or Year(maDate) Mod 400 0) Then
 IsBisextile = True
Else
 IsBisextile = False

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 11:49
1) Alors tu développes finalement sous VBA ! Tiens donc !
Et qu'était alors ton bizarre :
Dim d As Date
Date.IsLeapYear(Year(d))

? ===>>> rien du tout !

2) il est clair que ta textbox ne contient pas une date, mais du texte (string) !
et tu peux alors écrire (dur ?) ceci, qui marchera à tous coups, et dénoncera également une date invalide ! :

Dim madate As String
  madate = TextBox1.Text
  If Not IsDate(madate) Then MsgBox "donnée invalide !": Exit Sub
 If IsDate("29/02/" & Year(madate)) Then
   MsgBox "oui"
 Else
   MsgBox "non"
 End If

bref ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
andy331 Messages postés 45 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 juin 2010
5 févr. 2010 à 10:26
Private Sub TxtDateMailEnvoye_AfterUpdate()
Dim IsBissextile As Boolean
'Les conditions pour avoir une année bisextile sont les suivantes:
' - année divisible par 4 : année bisextile
' - exception : année divisible par 100 : année non bisextile
' - exception de l'exception : année divisible par 400 : année bisextile
 
If Year(maDate) Mod 4 0 And (Year(maDate) Mod 100 <> 0 Or Year(maDate) Mod 400 0) Then
 IsBisextile = True
Else
 IsBisextile = False
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 10:37
Bonjour,

1) on ne voit pas où est définie maDate et quelle valeur elle a !
2) une année est définitivement bissextile si le 29 février de l'année concernée est une date valide, tout simplement.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
EznehYet Messages postés 12 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 17 mars 2010
5 févr. 2010 à 10:51
Tu peux tester ceci :

Dim d As Date

        d.IsLeapYear(d.Year)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EznehYet Messages postés 12 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 17 mars 2010
5 févr. 2010 à 10:54
Hum j'ai été un peu vite x)

Dim d As Date
Date.IsLeapYear(Year(d))


ceci plutôt
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 11:05
1) si madate n'a pas de valeur, il est clair que ce sera toujours "Faux"
2) tu développes finalement sous quoi ? (je vois que tu as déjà un grand nombre de discussion qu'il a fallu déplacer vers le thème VBA !)
3) si VBA :
---- a) : regarde :
Dim madate As Date
  madate = "01/01/2016"
 If IsDate("29/02/" & Year(madate)) Then
   MsgBox "oui"
 Else
   MsgBox "non"
 End If

b) --- veux-tu bien s'il te plait prendre dorénavant le plus grand soin en ce qui concerne le choix du thème où tu ouvres une discussion ? ( c'est VRAIMENT IMPORTANT )
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 11:10
Quant à ceci (qui semble cette fois-ci du VB.Net !) :
Dim d As Date
Date.IsLeapYear(Year(d))

Elle est bien bonne !
1) tu n'as donné aucune valeur à d ! ===>> donc d = 0 !
2) d ne saurait, dans cette syntaxe, être une date, mais un integer (le millésime) ...
Tu fais n'importe quoi ! ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
EznehYet Messages postés 12 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 17 mars 2010
5 févr. 2010 à 11:30
Je n'ai pas précisé de valeur pour d c'est vrai, mais je ne pense pas que ce soit utile. Je montre juste qu'il existe une méthode indiquant si une date est bissextile ou pas.

Quelqu'un d'un peu intelligent comprendrait facilement la démarche à suivre.

Mais si tu tiens à ce que tout soit donné, j'y penserai la prochaine fois x)
0
andy331 Messages postés 45 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 juin 2010
5 févr. 2010 à 11:37
Je développe en VBA sous ACCESS


Dim madate As Date
  madate = "01/01/2016"
 If IsDate("29/02/" & Year(madate)) Then
   MsgBox "oui"
 Else
   MsgBox "non"
 End If

En faisant avec ton exemple sa marche bien

Mais lorsque je fais sans ton exemple et en declarant "
madate as date
"
en faisant le test pas à pas touche F8 il semblerait que la date de ma textBox sois pas reconnu elle vaut plutot ça (madate = 00:00:00)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 11:40
Ah !
et alors :
1) ou tu développes sous VBA ou VB6 ===>> et alors "Date.IsLeapYear" ne peut fonctionner ainsi écrit, sans que tu aies construit quelque chose d'autre (que l'on ne voit pas... et on ne sait pas ce que pourrait être le d dans ce "quelque chose que l'on ne voit pas")
2) ou tu développes sous VB.Net ===>> et ce que, moi, je vois, est ceci :
http://msdn.microsoft.com/fr-fr/library/system.datetime.isleapyear.aspx
où d est un integer et non une date

Re-question : tu développes sous quoi ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
EznehYet Messages postés 12 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 17 mars 2010
5 févr. 2010 à 11:50
Pour te répondre, je développe en VB.Net version 2008

Et si tu testes ce code-ci :
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim d As Date = "01/01/2008

        Label1.Text = Date.IsLeapYear(Year(d))
    End Sub


Tu verras qu'il t'indiquera "True" dans ton label

Si tu remplaces
Dim d As Date "01/01/2008"
par
Dim d As Date Today 'Date du jour
, il indiquera False.

2008 -> Année bissextile donc true
2010 -> Année normale donc False


Go tester x) (bien que je l'ai fait à l'instant)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 févr. 2010 à 11:52
Salut
maDate = 00:00:00 --> Tout dépend ce que tu mets dans ta TextBox et comment tu repiques son contenu pour le donner à ta fonction.
Ta fonction, correcte dans le principe, ne peut fonctionner QUE si l'année est au format de 4 chiffres.
Est-ce le cas ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 févr. 2010 à 11:57
Bonjour, Jack,

Je pense qu'il a maintenant la solution VBA qui "tourne" bien
Je pense également qu'à moins qu'on ne lui fasse comprendre avec force la nécessité de poser une question dans le thème adéquat, il recommencera à "poster" n'importe où ! (et qu'on perdra du temps à chaque fois )


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
andy331 Messages postés 45 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 11 juin 2010
5 févr. 2010 à 12:16
Merci beaucoup pour votre aide!!

Et je ne posterais plus mes question n'importe ou dorénavant!!
0
Rejoignez-nous