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

Résolu
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005 - 3 août 2005 à 17:08
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005 - 3 août 2005 à 21:43
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

smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 21:43
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 août 2005 à 18:35
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
0
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 18:41
- 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 ?????
0
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 18:44
J'avais pas de numéro d'erreur. Juste un variable non definie (année) qui boguait ( buggait ?)
0

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

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 août 2005 à 18:50
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
0
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 19:03
je suis assez d'accord avec toi, mais .. ça marchait dans le form1 sans qu''année' soit pasée en public
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 août 2005 à 19:06
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
0
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 19:34
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!
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 août 2005 à 19:58
ç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
0
smilingjoe2 Messages postés 20 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 19 août 2005
3 août 2005 à 20:13
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.
0
Rejoignez-nous