Appliquer une variable a un groupe de controle ?

Résolu
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005 - 9 déc. 2004 à 17:44
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005 - 11 déc. 2004 à 17:23
Bonjour,

Voilà, j'ai plusieurs groupes de label (10 groupes) et une fonction commune à tout ces groupes.

par exemple:

Private Sub Label1_Click(Index As Integer)
Dim a As Integer
For a = 1 To 6
If Label1(a).Caption = 50 Then
Label1(a).Visible = True
Label1(a).Caption = Label1(Index).Index
End If
Next a
End Sub

je voudrais maintenant faire par exemple:

Private Sub Label1_Click(Index As Integer)
MonLabel=Label1
MaFonction
End Sub

Sub MaFonction()
For a = 1 To 6
If MonLabel(a).Caption = 50 Then
MonLabel(a).Visible = True
MonLabel(a).Caption = MonLabel(Index).Index
End If
Next a
End Sub

Est-ce possible ?
Merci
Seb

13 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 déc. 2004 à 18:23
Re,

Alors VB (si je ne me trompe pas, si je me trompe corrigez moi ;) ) ne te permet pas de passer en parametre d un sub ou d une fonction une matrice de controle du form, tu dois te creer un tableau de label qui contient chaque element du groupe (un peu con mais bon....) et apres placer en parametre ce tableau Sub Mafonction(Tableau() as label)

ensuite juste une question: pourquoi dans Mafonction tu fais Bidule(index).Index et non pas directement Index car bidule(index).Index = Index...

Donc en fin de compte il faut que tu refasse 10 tableaux contenant tes dix groupes de label. et apres passer en parametres ceux que tu veux a la fonction MaFonction
par exemple ca serait:

Sub MaFonction(Truc() as Label, Index as integer)
For a = 1 To 5
If Truc(a).Caption = "50" Then
Truc(a).Visible = True
Truc(a).Caption = Index
End If
Next a
End Sub


ensuite tu l appelle de cette maniere.

Private Sub GroupeLabel1_Click(Index As Integer)
call MaFonction(TonTableauContenantLeGroupeLabel21, Index)
End Sub


alors je sais c est un peu barbare, mais ca devrait fonctionner, si ca ne fait poas ce que tu veux refait signe ;)

@+ et surtout @ Lundi :)
Julien
-----------------------------------------------------------
:big) Essaie ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 déc. 2004 à 18:40
Re,

Dernier truc et je m arrache en WE

'En Haut du form
Private Tableau(1 to 20) as Label
'Dans le Form Load
For i = 1 To 20
  SET Tableau(i) = GroupeLabel1(i)
Next
Et ainsi de suite pour tes 10 groupes .... 


amuse toi bien ;)
@+
Julien
-----------------------------------------------------------
:big) Essaie ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
3
cs_clafouti Messages postés 78 Date d'inscription samedi 16 mars 2002 Statut Membre Dernière intervention 7 septembre 2006
9 déc. 2004 à 18:52
J'ai pas essayé, mais ceci devrais marcher :

Private Sub Label1_Click(Index As Integer)
For a = 1 To 6
MaFonction Label1(a)
Next a
End Sub

Sub MaFonction(Monlabel as label)
If MonLabel.Caption = 50 Then
MonLabel.Visible = True
MonLabel.Caption = MonLabel.Index
End If
End Sub

Auteur de PrestoNotes, LE célèbre logiciel freeware de post-its développé en VB.
Découvrez-le sur http://users.chello.be/cr41007/index.html
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
9 déc. 2004 à 19:56
Bonsoir, merci pour ta réponse,

Malheureusement ça ne fonctionne pas, il m'indique Type incompatible (erreur 13) en me selectionnant la ligne:
If MonLabel.Caption = 50 Then

galère galère...
0

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

Posez votre question
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
9 déc. 2004 à 20:03
Rectification...

En faisant un essai vit'fait dans une nouvelle form et quelque groupe de label, ça fonctionne !

Donc il faut que je creuse mon programme pour trouver la soluc'...

En tout cas merci pour le coup de main.

Bye
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
9 déc. 2004 à 21:48
Bonsoir,

Finalement pour mon projet ça ne va pas étant donné que ce sont les "name" des groupes de labels que je veux mettre en mémoire.

C'est à dire que pour la solution de Clafouti je voudrais plutôt quelque chose du genre:

Private Sub Label1_Click(Index As Integer)
MaFonction Label1
End Sub

Sub MaFonction(Monlabel as label)
For a = 1 to 6
If MonLabel(a).Caption = 50 Then
MonLabel(a).Visible = True
MonLabel(a).Caption = MonLabel.Index
End If
Next a
End Sub

Ce qui reviendrait à dire que MonLabel aurait la valeur Label1

Et ça j'ai bien l'impression que ce n'est pas possible....

Merci
Seb
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 déc. 2004 à 09:37
Salut,

Si tu veux que MonLabel est la valeur Label1 (qui est le nom du groupe de controle si j ai bien compris) remplace la ligne
... = MonLabel.Index
par
...= MonLabel.Name


@+
Julien
-----------------------------------------------------------
:big) Essaie ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
10 déc. 2004 à 17:30
Ok Ok,

Je suis débutant en prog et faut dire aussi assez nul.
C'est pourquoi je doit mal exposer mon pb.

Voilà par exemple,

J'ai 5 groupes de 20 Labels composés comme suit,
GroupeLabel1(1 à 20) à GroupeLabel5(1à20)

ainsi que 5 autres groupes de 5 labels composés comme suit,
GroupeLabel21(1 à5) à GroupeLabel25(1 à 5)

j'ai ce code :

Private Sub GroupeLabel1_Click(Index As Integer)
Dim a As Integer
For a = 1 To 5
If GroupeLabel21(a).Caption = 50 Then
GroupeLabel21(a).Visible = True
GroupeLabel21(a).Caption = GroupeLabel1(Index).Index
End If
Next a
End Sub


Plutôt que de répéter ce code 10 fois pour chaque événement click sur mes groupes, en ne changeant que GroupeLabel21 en GroupeLabel22 ou 23...25 et GroupeLabel1 en GroupeLabel2 ou 3...5, je souhaiterais simplifier mon code en faisant une fonction.

Ce qui donnerait par exemple:

<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>
Private Sub GroupeLabel1_Click(Index As Integer)
Truc = GroupeLabel21
Bidoule= GroupeLabel1
MaFonction
End Sub

Sub MaFonction()
For a = 1 To 6
If Truc(a).Caption = 50 Then
Truc(a).Visible = True
Truc(a).Caption = Bidoule(Index).Index
End If
Next a
End Sub
[Code/]

Ok ?
Merci
@+ Seb
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 déc. 2004 à 18:23
Re,

Ah tiens..... piti Bug can meme
@+
Julien
-----------------------------------------------------------
:big) Essaie ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
10 déc. 2004 à 18:34
Re,

Merci pour ta réponse,
J'avais bien pensé aux tableau mais comme j'ai encore jamais utilisé cette fonction j'étais rétissant...8)

Alors je sais ce qui me reste à faire... C'est m'y mettre, voilà tout !xx(

hi hi hi...

Je te tiens au courant de la suite
Bye
Seb
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
11 déc. 2004 à 17:20
Salut Julien,

Tout d'abord merci beaucoup pour ton aide et ta super coopération... Grâce à toi, je n'ai eu à trop me creuser la tête pour apprendre à utiliser les tableau.
Encore une fois MERCI ! 8d ;) ^

Sinon à part ça j'ai pu, après quelques adaptations "savantes", adapter et appliquer tes précieux conseils et venir à bout de mes soucis.

Pour info, je suis en train "d'essayer" de me faire un petit programme permettant de gérer un abonnement aux jeux de tirages de la française des jeux... Je ne cherche à faire gagner, je sais bien que l'on ne pourra jamais prévoir LA combinaison sur les presques 14 millions possibles...

Voilà voilà merci beaucoup bon WE et peut-être à une prochaine...
Bye
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
11 déc. 2004 à 17:23
Salut Julien,

Tout d'abord merci beaucoup pour ton aide et ta super coopération... Grâce à toi, je n'ai eu à trop me creuser la tête pour apprendre à utiliser les tableau.
Encore une fois MERCI ! 8d ;) ^

Sinon à part ça j'ai pu, après quelques adaptations "savantes", adapter et appliquer tes précieux conseils et venir à bout de mes soucis.

Pour info, je suis en train "d'essayer" de me faire un petit programme permettant de gérer un abonnement aux jeux de tirages de la française des jeux... Je ne cherche à faire gagner, je sais bien que l'on ne pourra jamais prévoir LA combinaison sur les presques 14 millions possibles...

Voilà voilà merci beaucoup bon WE et peut-être à une prochaine...
Bye
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
11 déc. 2004 à 17:23
Salut Julien,

Tout d'abord merci beaucoup pour ton aide et ta super coopération... Grâce à toi, je n'ai eu à trop me creuser la tête pour apprendre à utiliser les tableau.
Encore une fois MERCI ! 8d ;) ^

Sinon à part ça j'ai pu, après quelques adaptations "savantes", adapter et appliquer tes précieux conseils et venir à bout de mes soucis.

Pour info, je suis en train "d'essayer" de me faire un petit programme permettant de gérer un abonnement aux jeux de tirages de la française des jeux... Je ne cherche à faire gagner, je sais bien que l'on ne pourra jamais prévoir LA combinaison sur les presques 14 millions possibles...

Voilà voilà merci beaucoup bon WE et peut-être à une prochaine...
Bye
0
Rejoignez-nous