Groupe de label ou tableau

Résolu
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 25 oct. 2007 à 20:43
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 26 oct. 2007 à 13:12
bonjour tout le monde
j'ai un groupe de label (lbl(0),,,,lbl(N))
je veux savoir si je peux le traiter comme tableau parceque j ai essayer d'utliser redim preserve mais ca n'a pas marché
et merci

14 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 oct. 2007 à 21:37
Malgrés les apparences , un groupe de controle n'est pas un tableau, il est plus à considéré comme une collection.

Théoriquement un Redim ne devrais pas fonctionner. Une collection se traite avec une méthode Add pour ajouter un élément et remove pour en supprimer un. Dans un groupe de controle, les méthodes sont implicites et automatiquement appelées à partir du moment ou un controle portant le nom du groupe est créer ou détruit.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 oct. 2007 à 23:08
Bonsoir,


Bien évidemment non !


l'index de l'un n'est certes pas ainsi devenu celui de l'autre !Ce que tu as écrit établit simplement une égalité des deux propriétés par défaut (caption) de l'un et de l'autre...
 
Mais tu aurais pu le voir toi-même !

Petit test avec un petit projet composé d'un label label1(o) et d'un bouton de commande Command1, donc ...

Private Sub Command1_Click()
  Load Label1(1)
  Label1(1).Move Label1(0).Left + Label1(0).Width
  Label1(1).Visible = True
  Label1(0).Caption = "coucou"
  Label1(1) = Label1(0)
  MsgBox Label1(1).Index
End Sub

vois ce que tu as à l'écran et ce qu'affiche ton message... (tu aurais fait celà et tu aurais eu ta réponse tout seul, comme un grand).
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 oct. 2007 à 20:53
Un groupe de contrôles indexés possède déjà :
- des index
- une propriété Ubound
- une propriété Lbound

(tout ce que possède un tableau classique, donc...)

Alors .... ? (et à quoi te servirait un Redim Preserve, dans cette "affaire" ?)
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
25 oct. 2007 à 21:01
jmfmarques < Je supposes qu'il veut ajouter un controle à son groupe !
argentin7 < Si c'ets bien ela que tu veux tu peux simplement faire ceci :

Load lbl(lbl.count)
With lbl(lbl.count-1)
.Move ...

.Visible = True
End With
0

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

Posez votre question
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
25 oct. 2007 à 22:46
merci pour vos reponses
effectivement Kristof ,dans mon code je cree des labels dynamiquement


j'ai trouver cette procedure sur le forum pour faire un delete d'un element du tableau son laisser un "trou",mais lorsque je l'ai appliqué sur mon groupe de controle ca ne fonctionne pas


 




Public Sub Delete(ByRef tableau As variant, element As variant)
Dim i As Integer
For i = element To UBound(tableau) - 1
tableau(i) = tableau(i + 1)
Next
ReDim Preserve tableau(UBound(tableau) - 1)
End Sub

merci a tous
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
25 oct. 2007 à 22:50
si vous me permettez
lorsque je met lbl(i+1)=lbl(i), est ce que cela veut dire aussi que l'index de lbl(i+1) est devenu egal a l'index de lbl(i) soit i
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
25 oct. 2007 à 23:07
Lis bien ce qu'a écrit Casy !!
TU NE DOIS PAS CONSIDERER TON GROUPE DE CONROLE COMME UN TABLEAU MAIS COMME UNE COLLECTION !!
Pour supprimer un élément de ton groupe :
Unload lbl(Index)
ou Index représente l'index du label à supprimer.
Pour ce qui serait "de ne pas laisser un trou", ton groupe étant une collection et non un tableau tu t'e fout un peu !!
Tu pouras toujorus faire un For Each sur ton groupe pour passer tous tes labels en revue :
Dim Item As Label
For Each Item In Lbl
MsgBox Item.Caption & vbCrLf & "Index=" & Item.Index
Next
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
25 oct. 2007 à 23:13
Salut,
si tu as 8 éléments et que tu supprimes le 4ième,
tu pars de l' element +1 ==> 5
For i= 5 to  8
 lbl(i).Index = i -1
Next
Ainsi :
le 5 redevient 4
le 6 ..............5
le 7 ------- 6
le 8 ------- 7
comme ça tu n' auras pas de " trou"  tout en évitant d' avoir deux éléments du même indice.

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
25 oct. 2007 à 23:55
a chaibat
For i= 5 to  8
 lbl(i).Index = i -1
Next
COMPIL ERROR
can't assign to read only property


proprieté en lecture seulement
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
26 oct. 2007 à 00:06
j'ai oublier de vous dire que lorsque je supprime un element de mon groupe de controle lbl(i
)
je veux que le reste change d'index c'est a dire que tous les element ayant un index superieur a i</gras>i      index(apres suppression de l'element i)=index(avant suppression de l'element i)-1
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
26 oct. 2007 à 00:39
mais tu ne peux pas modifier l'index d'un controle ! C'est une propriété en lecture seule. Tu l'as écrit toi-même à l'attention de Chaibat !
i va falloir que tu fasses avec les trou dans les Index. Pourquoi cela te pose-t-il un souci s'il y a des trous dan sl'ordre des index ?
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
26 oct. 2007 à 07:51
a Kristof
je voulais faire des boucles avec for next
mais je pense que for each va regler le probleme
s'il y a un autre moyen je vous serai tres reconnaissant

Q: Pourquoi cela te pose-t-il un souci s'il y a des trous dans l'ordre des index ?
R: qestion d'organisation (masi oui pourquoi cela me pose un souci !!!!!!!!)
merci Kristof

mais si vous avez une solution ca sera super
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
26 oct. 2007 à 11:21
Je pense que le For Each Est ta solution
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
26 oct. 2007 à 13:12
merci Kristof
0
Rejoignez-nous