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 !
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
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+
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
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
je vais encore vous embêter ...
peut-on adresser directement une valeur à un contrôle donné.
exemple : label(n).caption = ...
merci
je vais encore vous embêter ...
peut-on adresser directement une valeur à un contrôle donné.
peut-on adresser directement une valeur à un contrôle donné.
exemple : label(n).caption = ...
merci
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
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+
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
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.
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
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
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
vraiment merci !
C'est exactement ce que je souhaite faire. Je peux manipuler ce tableau
de label et appeler chaque élément.
.