Question de n00b groupe de controles

consiliblob Messages postés 29 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 8 août 2004 - 3 juil. 2004 à 15:29
jissehem2 Messages postés 2 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 16 août 2004 - 16 août 2004 à 16:57
bijour c'est de nouveau moi :p
je suis un n00b donc dsl pour cette question sûrment hyper simple pour vous (mais répondez y quand meme^^)
donc la question c'est : comment faire une action pour tout un groupe de controle ?

Label1(*pour tous les label de 1 à 16 comment faire ?*).caption = "bla bla bla"

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 juil. 2004 à 19:33
Salut consiliblob
Si tu envisages de faire des manips sur des séries d'objet, il vaut mieux les indexer : ils auront tous le même nom, mais on pourra leur parler grace à un chiffre :
Pour indexer :
- Créé un premier Label1
- Dans la propriété Index, mets lui 0 (zéro)
- Ensuite, fais un copier coller de ce label1.
Tu auras 16 fois le Label1 avec les index 0 à 15 (l'indexation peut commencer à 1, mais en cas de "coller", VB cherche le premier index dispo et c'est 0 -> change-le après avoir coller tous tes labels)

Ensuite, pour modifier le contenu de tes 16 Label1 :
For r = 0 to 15
   Label1(r).Caption = "Bla bla bla"
Next r

Si tu n'indexes pas tes contrôles, ça va être plus cotton :
On va supposer qu'ils s'appellent Label1, Label2, ..., Label16
Pour modifier le contenu de ces 16 Label là :
Dim xx As Object, Temp As String
For Each xx In Me
   Temp = xx.Name
   If Temp Like "Label*" Then
      Temp = Mid(Temp, 6)  ' Prend les caractères après Label
      If Val(Temp) >= 1 And Val(Temp) <= 16 Then _
          xx.Caption = "hhh"
   End If
Next

Nota : Il n'est pas possible d'indexer les objets sous VBA de Excel, Word ou Access --> ça ne marche que sous VB6 (et .Net)

Vala
Jack
0
consiliblob Messages postés 29 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 8 août 2004
4 juil. 2004 à 13:24
Merci pour tes explications Jack, c'est certes beaucoup plus simple comme ca
For r = 0 to 15
Label1(r).Caption = "Bla bla bla"
Next r
0
consiliblob Messages postés 29 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 8 août 2004
4 juil. 2004 à 16:29
C'est bon, mais j'ai encore une question: comment faire un truc du genre (lol je ne sais pas comment expliquer)

For r = 0 to 15 + 17 To 32 'comment faire ????
Label1(r).Caption = "Bla bla bla"
Next r
0
jissehem2 Messages postés 2 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 16 août 2004
16 août 2004 à 16:57
fais simple :

For r = 0 to 32
Label1(r).Caption = "Bla bla bla"
Next r
Label1(16).caption="" 'Chaîne vide ou ce que tu veux d'autre

Ou encore (s'il faut vraiment pas toucher au r=16):

For r = 0 to 32
if r<>16 then
Label1(r).Caption = "Bla bla bla"
end if
Next r
0
Rejoignez-nous