VB6 - Weekday -Ca marche et ça ne marche plus !

[Résolu]
Signaler
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005
-
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005
-
Bonjour,
Il m'arrive une chose curieuse, j'ai un code qui fonctionne dans une form et pas dans l'autre. Dans le 2ème form, je bug sur 'année'. Si quelqu'un peut m'aider avant que je ne jette mon ordi par la fenêtre ..... Merci.

dans le module 1 j'ai déclaré mes variables :
Public vitamineA As String
Public vitamineB As String


ensuite, dans chaque form j'ai mis exactement le même code :
Private Sub vitamine()
vitamineA = " Lundi, c'est le jour des vitamines A!"
vitamineB = "mecredi, jour des vitamines B!"

If Weekday(DateSerial(Année, Mois, jour),_ vbMonday) = 1 Then
Text1.Text = vitamineA & Text2.Text
ElseIf Weekday(DateSerial(Année, Mois, jour),_ vbMonday) = 3 Then
Text1.Text = vitamineB & Text2.Text
Else
Text1.Text = Text2.Text
End If


End Sub

10 réponses

Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

La reponse est : OPTION EXPLICIT. Je méditait sur les réponses de Daniel quand la lumière s'est faite. Je suis un triple idiot : mon form 2 n'était pas vide, j'avais déjà des sub et ... un option explicit.


Donc form1 variant et form2 option explicit --> obligé de déclarer 'année'


Voilà. l'aprés-midi et uen bonne partie de la soirée à me taper la tête contre les murs pour ça. !!
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
c'est pas WeekDay qui plante alors, c'est DateSerial

c'est quoi le numéro d'erreur ?

et t'as testé ce qu'il y avait dans Année

ça passe j'usqu'à 9999 et ça passe même avec des nombres négatifs

Daniel
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

- La solution : mettre la fonction dans le module1 en public sub vitamine() et l'appeller à partir de mes 2 forms. Et là ça marche partout.
- L'explication ?????
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

J'avais pas de numéro d'erreur. Juste un variable non definie (année) qui boguait ( buggait ?)
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
ben si Année n'était pas défini en Public ? c'est normal



(en fait c'est bug, en français ce serait plutot punaise ou bestiole)

Daniel
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

je suis assez d'accord avec toi, mais .. ça marchait dans le form1 sans qu''année' soit pasée en public
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
il était défini dans Form1 alors, c'est obligé ...



(on pourrait dire papillon aussi mais je vois pas le rapport avec la noix)

Daniel
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

Où est passée ma réponse ? J'ai du cliquer sur la mauvaise fenêtre. ..


Je ne crois pas ( en tout cas pas par moi) J'ai fait un copié-collé de mon projet vide TEST ( ça fonctionnait) vers le form2 de mon appli. Et là bug. Je l'ai alors testé sur le form1 de la dite appli. toujours en copier collé. 9a fonctionnait. Je n'ai jamais déclaré 'année' nulle part.
J'ai effacé le code du form1 et du form2, copié-collé ( bon d'accord, j'ai transformé private sub en public sub) en module1, un call sur le form1, un call sur le form2 et ça marche partout. Toujours pas déclaré 'année' et toujours rien compris!
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
ça c'est une mauvaise habitude de ne pas déclarer ses zones.

mettre dans les options --> editor --> require Variable Declaration

pour avoir OPTION EXPLICIT au début

sinon ta variable année (et les autres aussi surement mois et jour) a été définie implicitement en Variant (et en private)

mais bon ça devrait être pareil sur les autres formes ???

si elle est utilisé (maintenant) seulement dans le module ça ne pose plus de problème

Daniel
Messages postés
20
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
19 août 2005

Tu as raison, pour OPTION ECPLICIT. Autant prendre de suite de bonnes habitudes. Ce qui m'evitera sans doute ce genre de casse-tête ! En tant que débutant en dév. et en VB j'ai dejà suffiseament de mal comme ça!
D'ailleurs j'en profite pour te remercier de tes réponses et pour remercier tous ceux qui répondent d'une manière générale. C'est grâce à vous que mon appli est bientôt presque-terminée.