Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1853 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Remplir 50 labels en une seule commande ? [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Remplir 50 labels en une seule commande ? [résolu]

n°918168
zbod
Posté le 08-12-2004 à 18:01:29  profilanswer
 

Bonjour,
 
Je dispose de plusieurs Userforms dont l'un d'eux possède une liste et de nombreux labels. Supposons que  
 
quand je sélectionne un objet de ma liste, cela affiche le détail de celui-ci dans les différents labels.
 
Maintenant supposons que mes labels se nomment "label1" , "label2" , ... ; le "label1" devant afficher la  
 
cellule "cells(1,1)" , tout comme le "label2" devant afficher la cellule "cells(2,1)" , ...
 
Ainsi, mon code ressemble à : (ce n'est qu'un exemple)
label1.caption = cells(1, 1)
label2.caption = cells(2, 1)
label3.caption = cells(3, 1)       [le .caption étant facultatif]
...
label50.caption = cells(50, 1)
 
Jusqu'ici rien de compliqué...
 
Voilà, ma question est très simple : est-il possible de coder cette action en utilisant une boucle ?
Quelque chose qui ressemblerait à :
 
For ligne = 1 To 50
     label(ligne).caption = cells(ligne, 1)
Next Ligne
 
Je sais que cette syntaxe ne fonctionne pas mais je voudrais simplement savoir si un code y ressemblant est  
 
possible ou si je dois taper les 50 lignes de code de mes 50 labels ???
 
J'ai essayé des syntaxes du style : "label & ligne" mais ça ne fonctionne pas non plus...
 
J'attends vos réponses avec impatience.
Merci d'avance.


Message édité par zbod le 08-12-2004 à 21:22:03
mood
Publicité
Posté le 08-12-2004 à 18:01:29  profilanswer
 

n°918202
push
/dev/random
Posté le 08-12-2004 à 18:39:50  profilanswer
 

pq t'as pas fais un groupe de label ? avec ca ta boucle était ok.

n°918223
galopin01
Posté le 08-12-2004 à 18:58:49  profilanswer
 

Bonsoir,
Le code suivant donne la caption 1 a 50 à tes 50 premiers labels...
A adapter selon ton cas...
 
Sub Test()
For i = 1 To 50
Z = "Label" & i
Worksheets(1).OLEObjects(Z).Object = i
Next
End Sub
 
A+
PS: ne fonctionne pas si les labels sont groupés.

n°918248
galopin01
Posté le 08-12-2004 à 19:22:37  profilanswer
 

Re...
S'il y a d'autres OleObject dans ton userform, il peut-être utile de récupérer auparavant le N° d'index OleObject de ton 1er Label avec le code suivant...
 
Sub A_Test()
'1) ProgId (pour retenir uniquement les contrôles Label)
'2) Object (remplace la propriété Caption pour ce genre de contrôle)
'**************************
Dim O As OLEObject, i%
For Each O In ActiveSheet.OLEObjects
    If O.progID = "Forms.Label.1" Then
MsgBox O.Index
Next
End Sub
 
Ensuite tu adaptes la première procédure (Test) avec les N° d'index récupérés.
...Il y a peut-être plus simple, mais c'est ce que j'ai trouvé de mieux dans un cas identique et surtout si tes captions sont susceptibles de changer à chaque appel...
Cordialement

n°918264
zbod
Posté le 08-12-2004 à 19:48:08  profilanswer
 

Merci pour vos réponses rapides !
M'en vais tester tout ça...
 
push : peux-tu me donner un peu plus de précision sur ce que j'y gagne à grouper mes labels ?
 
galopin01 : j'vais bouquiner ta solution avec l'aide (F1) car je ne maîtrise pas trop les OLEObject...
 
Je reviens si je galère trop.
A+

n°918267
push
/dev/random
Posté le 08-12-2004 à 19:51:58  profilanswer
 

bein si tu groupes tes labels, tu les identifies par leur indice respectif, label(0) label(1) label(2) ... donc c'est ultra simple d'attaquer tout un groupe de label dans une boucle, dans ton cas un truc du genre
 
For ligne = 1 To 50
     label(ligne-1).caption = cells(ligne, 1)
Next Ligne

n°918270
zbod
Posté le 08-12-2004 à 20:00:28  profilanswer
 

Ok, merci c'est clair...
Je fais les tests dès demain !
A+
 
Et dire que j'allais me taper les 50 lignes de code !

n°918278
Profil sup​primé
Posté le 08-12-2004 à 20:14:14  answer
 

euh .... on peut indexer les controles en VB mais je pense pas qu'on puisse le faire en VBA !

n°918279
push
/dev/random
Posté le 08-12-2004 à 20:18:14  profilanswer
 

sorry j'avais pas vu que c'était du VBA Excel  :sweat:  
 
je sais pas si c'est possible...


Message édité par push le 08-12-2004 à 20:19:13
n°918285
Profil sup​primé
Posté le 08-12-2004 à 20:31:55  answer
 

Quant aux objets OLE , l'appel fonctionne uniquement pour ceux concus dans une feuille Excel et non dans un Userform ...

mood
Publicité
Posté le 08-12-2004 à 20:31:55  profilanswer
 

n°918295
Profil sup​primé
Posté le 08-12-2004 à 20:43:12  answer
 

essaye ca ;)
 
For i = 0 To UserForm1.Controls.Count - 1
If Left(UserForm1.Controls.Item(i).Name, 5) = "Label" Then
UserForm1.Controls.Item(i).Caption = cells(i,1)
End If
Next i

n°918303
galopin01
Posté le 08-12-2004 à 20:56:20  profilanswer
 

Bonsoir,
Mais c'est bien sûr...
Je me retire sur la pointe des pieds.
Merci Gargamail, effectivement j'avais bien monté mon truc sur  
Feuille...
A+


Message édité par galopin01 le 08-12-2004 à 21:02:59
n°918310
zbod
Posté le 08-12-2004 à 21:02:19  profilanswer
 

Super ! Merci pour cette solution que je vais vite tester.
 
Le truc c'est que mes labels sont dans un MultiPage et que seuls les labels présents sur la première page m'intéresse.
 
Je ne sais pas si ta solution ne va pas scanner tous les labels du Userform... enfin je vais l'adapter en conséquence.
L'idée n'est pas mauvaise en tout cas !!!
 
A+

n°918327
zbod
Posté le 08-12-2004 à 21:21:20  profilanswer
 

Bon, j'ai pas testé ta soluce mais sur un autre forum on m'a dit d'essayer ça :
 
For ligne = 1 To 50
    Me.Controls("label" & Ligne).caption = cells(ligne, 1)
Next Ligne
 
J'ai fais le test et ça roule : c'est exactement ce que je voulais (après l'avoir adapté).
 
Merci encore pour vos réponses !
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Remplir 50 labels en une seule commande ? [résolu]

 

Sujets relatifs
[VB6] Conversion .doc en .pdf [résolu]Problème avec la taille d'un tableau [résolu]
[Powerpoint VBA 6] Quels events catchés par DoEvents ?Ecrire dans un fichier excel
[RESOLU]Entrées multiples pourquoi??débutant en VBA (petit probléme)
Automatiser un solveur sur excel en VBAcryptage md5[resolu]
Plus de sujets relatifs à : [VBA Excel] Remplir 50 labels en une seule commande ? [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR