Vb 6.3 Excel modifier propriétés plusieurs Label

Le
dominique
Bonjour,

je cherche une solution au problme suivant :

dans une feuille Excel j'ai plusieurs contrles Label nomms
label_n.
je souhaiterais pouvoir modifier par exemple leur caption sans les
appeler un par un mais dans une boucle du type :

for i = 1 to 15
"label_" & i .caption ="bla bla bla"
next

impossible raliser pour le novice que je suis !

merci par avance qui pourra me dpanner !!

Dominique
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
anonymousA
Le #3738911
Bonjour,

si les labels sont des labels issus de la BO formulaires, ci-dessous 2
manières de parcourir la collection des labels de la feuille active

For I = 1 To ActiveSheet.Labels.Count
MsgBox ActiveSheet.Labels(I).Caption
Next

For Each lbl In ActiveSheet.Labels
MsgBox lbl.Caption
Next

si les labels sont des labels issus de la BO Controles

For I = 1 To ActiveSheet.OLEObjects.Count
MsgBox ActiveSheet.OLEObjects(I).Object.Caption
Next

A+
dominique
Le #3738721
bonjour,

et merci beaucoup pour votre aide.

Juste un détail encore.
Les labels sont des labels issus de la BO Controles

For I = 1 To ActiveSheet.OLEObjects.Count
MsgBox ActiveSheet.OLEObjects(I).Object.Caption
Next

cette boucle passe en revue tous les contrôles. y a-t-il un moyen de
parcourir les contrôles par type : que les contrôles Label p.
exemple?

merci beaucoup,

Dominique
anonymousA
Le #3738561
plusieurs écritures possibles

For Each s In ActiveSheet.Shapes
If s.Type = msoOLEControlObject Then
If s.OLEFormat.Object.ProgId = "Forms.Label.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox
ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Name
End If
End If
Next

A+
dominique
Le #3737261
je vais encore vous embêter ...

peut-on adresser directement une valeur à un contrôle donné.

exemple : label(n).caption = ...

merci
anonymousA
Le #3737221
re,

formellement non. Ce que tu peux faire mais est ce beaucoup plus simple
( à toi de voir), tu peux constituer un tableau des labels et ensuite
faire appel aux éléments de ce tableau par un indice.

exemple

Dim tablbl()
A = 0
For Each s In ActiveSheet.Shapes
If s.Type = msoOLEControlObject Then
If s.OLEFormat.Object.ProgId = "Forms.Label.1" Then
A = A + 1
ReDim Preserve tablbl(1 To A)
Set tablbl(A) =
ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object
End If
End If
Next


tablbl(1).Caption = "tutu"
tablbl(2).Caption = "tata"


Dans ce qui précède, on a créé un tableau de labels et il devient
possible d'atteindre l'un d'entre eux par l'indice dans le tableau.
Si tu le souhaites , tu peux même déclarer ce tableau comme étant
une variable de type Public et du coup sous réserve que les labels ne
soient pas supprimés durant le temps d'ouverture du fichier , ce
tableau sera accessible et donc ces éléments aussi.

Je ne sais pas si ca te simplifie ou pas la vie.

a+
dominique
Le #3736701
vraiment merci !

C'est exactement ce que je souhaite faire. Je peux manipuler ce tableau
de label et appeler chaque élément.
.

bon week-end à toi

Dominique
Poster une réponse
Anonyme