Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vb 6.3 Excel modifier propriétés plusieurs Label

6 réponses
Avatar
dominique
Bonjour,

je cherche une solution au probl=E8me suivant :

dans une feuille Excel j'ai plusieurs contr=F4les Label nomm=E9s
label_n=B0.
je souhaiterais pouvoir modifier par exemple leur caption sans les
appeler un par un mais dans une boucle du type :

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

impossible =E0 r=E9aliser ... pour le novice que je suis !

merci par avance =E0 qui pourra me d=E9panner !!

Dominique

6 réponses

Avatar
anonymousA
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+
Avatar
dominique
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
Avatar
anonymousA
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+
Avatar
dominique
je vais encore vous embêter ...

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

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

merci
Avatar
anonymousA
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+
Avatar
dominique
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