Procédure? fonction?

Résolu
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008 - 27 nov. 2008 à 13:18
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008 - 27 nov. 2008 à 18:52
Bonjour à tous

J'ai un petit soucis, et donc un conseil à vous demander. En effet, je
suis en train de programmer une application, et je me rends compte qu'à
plusieurs reprises je reprends ce code :
b = b + 1

Label2.Text = b

If b > 10 Then

Timer2.Enabled = False

btn_valid2.Visible = False

Panel2.Enabled = False

Panel3.Visible = True

nb5.Focus()

essai = essai + 1

Call remplirGridFacil(Grid2)

Grid2.Visible = True

End If


Seulement, à chaque fois, j'ai le nom de label qui change, le nom du timer, du panel, de la variable 5, et aussi du grid.

Je me dis donc qu'une procédure ou fonction serait ici utile mais étant débutante je ne sais pas trop si c'est possible ou non?

J'attends vos conseils

Je vous remercie d'avance.

11 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 nov. 2008 à 18:45
Salut,
Mais qu est ce que tu entends pas timer là????
Y en a pas dans ta procédure....

Public Sub tim(ByVal lbl As Label)
    Dim a As Integer
    a = a + 1
    lbl.Text = a
End Sub

EN revcanche si tu souhaites garder la valeur qu'a A à chaque passage, Alors essaie peu être


Public Sub tim(ByVal lbl As Label)

    Static a As Integer

    a = a + 1

    lbl.Text = a

End Sub

@+: Ju£i€n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 nov. 2008 à 13:40
Salut,
Voici un exemple sur la logique à employer

'Call LaSub(Label2, Timer2, 5)

Private Sub LaSub(Lbl As Label, Tmr As Timer, Nbr As Integer)
   b = b + 1
   Lbl.Text = b
   If b > 10 Then
       Tmr.Enabled = False
       btn_valid2.Visible = False
       Panel2.Enabled = False
       Panel3.Visible = True
       Me.Controls("nb" & CStr(Nbr)).Focus
       essai = essai + 1
       Call remplirGridFacil(Grid2)
       Grid2.Visible = True
   End If

End Sub , ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 15:00
Je suis d'accord avec toi mais je suis embêtée pour les panel. Je me sers du panel2 et du panel3.
Comment puis je remédier à ce problème?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 nov. 2008 à 15:17
Salut,
Je t'ai donner l'idée à toi d'augmenter le nombre de paramètre nécessaires pour ta Sub...
De plus je ne connais pas le type de Panel2 et Panel3

@+: Ju£i€n
Pensez: Réponse acceptée
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 nov. 2008 à 17:10
Salut,
Si ton problème n'est pas résolu, enlève le réponse acceptée.
Evite aussi Les MP STP:

tjrs mon prob :(

Message :

voilà j'ai crée ma fonction, mais le problème c'est que quand je
l'appelle dans mon programme principal, il me dit que le nom n'est pas
déclaré

J'ai appelé ma fonction tim

donc quand j'écris call Tim ( avec les arguments à l'intérieurs)il
me met une erreur alors que dans ma feuille de module elle s'appelle
pareil,

tu as une idée ? je te remercie d'avance


Peu tu poster ici, le code que tu utilises (en précisant ou se trouve le code?)

NOTE si tu as mis ta Sub Comme PRivate c'est normal que tu ne la vois pas en dehors de ton module.

@+: Ju£i€n

 
Pensez: Réponse acceptée
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 17:16
Désolée je suis nouvelle sur le forum et je ne savais pas qu'une fois la réponse acceptée on pouvait encore écrire dans le topic !
Non ma procédure est bien en public
Quand je note le code dans le programme principal, mon timer se met en route comme il faut, cependant, quand je note le code dans une fonction que je mets dans un module, le timer ne fonctionne plus, il ne va pas plus loin que 1.
Je vous mets le code de la procédure :
    Public Sub Tim(ByVal Lbl As Label, ByVal Tmr As Timer, ByVal Nbr As Integer, ByVal btn_valid As Button, ByVal Grid As DataGridView, ByVal PanelA As Panel, ByVal PanelB As Panel)
        Dim b As Integer
        Dim essai As Integer
        Tmr.Start()
        b = 0
        b = b + 1
        Lbl.Text = b
        If b > 9 Then
            Tmr.Enabled = False
            btn_valid.Visible = False
            PanelA.Enabled = False
            PanelB.Visible = True
            JeuFacile.Controls("nb" & CStr(Nbr)).Focus()
            essai = essai + 1
            Call remplirGridFacil(Grid)
            Grid.Visible = True
        End If

    End Sub

Voici l'appelle de la fonction :
 Call Tim(Label1, Timer1, 3, btn_valid1, Grid1, Panel1, Panel2)

Je ne comprends pas pourquoi sans fonction tout fonctionne, et si je note le même code dans la fonction, rien ne va plus.
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 17:17
ma procédure se trouve dans un module ou il y en a déjà d'autres, notamment remplirgridfacil.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 nov. 2008 à 18:02
Salut,
Il faut à mon avis passé les paramètre en ByRef et non en ByVal
je vais vérifier ce que j'avance avec VB6
@+: Ju£i€n
Pensez: Réponse acceptée
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 18:10
non, je pense que le ByVal est bon là
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 18:31
j'ai voulu tout enlever, pour voir si l'essentiel fonctionnait.
J'ai donc fait une fonction :
' Call tim(Label1)

    Public Sub tim(ByVal lbl As Label)
        Dim a As Integer
        a = a + 1
        lbl.Text = a
end sub

Avec ca, mon timer va jusqu'à 1 c'est tout.

Par contre, quand je mets
        a = a + 1

        lbl.Text = a
dans mon programme, là mon timmer fonctionne parfaitement
Peut etre est ce impossible de passer un timer en fonction?
0
tezcaa Messages postés 16 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 16 décembre 2008
27 nov. 2008 à 18:52
C'était ca, je devais déclarer la variable A en static,
je ne l'avais pas vu en cours;
je te remercie pour ta précieuse aide!
0
Rejoignez-nous