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

andy331 45 Messages postés mercredi 11 novembre 2009Date d'inscription 11 juin 2010 Dernière intervention - 5 févr. 2010 à 10:15 - Dernière réponse : andy331 45 Messages postés mercredi 11 novembre 2009Date d'inscription 11 juin 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 11:49
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de ucfoutu
andy331 45 Messages postés mercredi 11 novembre 2009Date d'inscription 11 juin 2010 Dernière intervention - 5 févr. 2010 à 10:26
0
Merci
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
Commenter la réponse de andy331
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 10:37
0
Merci
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
Commenter la réponse de ucfoutu
EznehYet 12 Messages postés samedi 23 avril 2005Date d'inscription 17 mars 2010 Dernière intervention - 5 févr. 2010 à 10:51
0
Merci
Tu peux tester ceci :

Dim d As Date

        d.IsLeapYear(d.Year)
Commenter la réponse de EznehYet
EznehYet 12 Messages postés samedi 23 avril 2005Date d'inscription 17 mars 2010 Dernière intervention - 5 févr. 2010 à 10:54
0
Merci
Hum j'ai été un peu vite x)

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


ceci plutôt
Commenter la réponse de EznehYet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 11:05
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 11:10
0
Merci
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
Commenter la réponse de ucfoutu
EznehYet 12 Messages postés samedi 23 avril 2005Date d'inscription 17 mars 2010 Dernière intervention - 5 févr. 2010 à 11:30
0
Merci
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)
Commenter la réponse de EznehYet
andy331 45 Messages postés mercredi 11 novembre 2009Date d'inscription 11 juin 2010 Dernière intervention - 5 févr. 2010 à 11:37
0
Merci
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)
Commenter la réponse de andy331
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 11:40
0
Merci
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
Commenter la réponse de ucfoutu
EznehYet 12 Messages postés samedi 23 avril 2005Date d'inscription 17 mars 2010 Dernière intervention - 5 févr. 2010 à 11:50
0
Merci
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)
Commenter la réponse de EznehYet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 5 févr. 2010 à 11:52
0
Merci
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)
Commenter la réponse de cs_Jack
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 févr. 2010 à 11:57
0
Merci
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
Commenter la réponse de ucfoutu
andy331 45 Messages postés mercredi 11 novembre 2009Date d'inscription 11 juin 2010 Dernière intervention - 5 févr. 2010 à 12:16
0
Merci
Merci beaucoup pour votre aide!!

Et je ne posterais plus mes question n'importe ou dorénavant!!
Commenter la réponse de andy331

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.