Procédure? fonction?

Résolu
Signaler
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

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?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

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.
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

ma procédure se trouve dans un module ou il y en a déjà d'autres, notamment remplirgridfacil.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

non, je pense que le ByVal est bon là
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

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?
Messages postés
16
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
16 décembre 2008

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!