importer d'une feuille le texte des labels

  • Initiateur de la discussion Initiateur de la discussion copayo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

copayo

XLDnaute Occasionnel
Bonjour à tous,

J'ai crée un USF avec un controle mutlipage

Dans chaque page j'ai plusieurs labels

Je souhaite lié le texte de chaque label à une cellule excel (Excel => label)

J'ai nommé chaque label avec un nom qui correspond à la cellule excel.

J'aimerais faire une boucle plutot que de les lier 1 par 1.

Ca donnerait ca en substance mais je ne sais pas l'écrire correctement :

for each caption
caption.label = worksheets("Text").range("caption.name")
next


Merci pour vos contributions
 
Re : importer d'une feuille le texte des labels

bonjour Copayo

Dim cel as Range,I as byte

for each cel in worksheets("Text").range("A1:F1")
i=i+1
controls("label" & I).Caption = Cel.address'ou Cel.value
next cel

à bientôt
 
Re : importer d'une feuille le texte des labels

Bonsoir Copayo, Bebere

pas assez rapide mais c'est fait, alors je donne quand même, cela fera une 2ème solution, enfin si j'ai bien compris...

Code:
Private Sub UserForm_Initialize()
Dim Ctrl As Control, i As Byte
i = 1
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.Label Then Ctrl.Caption = Range("A" & i).Value: i = i + 1
Next Ctrl
End Sub

bonne soirée
@+
 
Re : importer d'une feuille le texte des labels

Bonjour à tous,

Bien que battu au sprint (ca m'apprendra à répondre au téléphone !), je joins une autre possibilité qui se rapproche de la proposition de Pierrot93 (que je salue bien par ailleurs)

Hypothèse de départ :
-Un userform nommé "USF"
-4 labels (de label1 à label4)
-Les entêtes de label à importer des cellules A5 à A8 dans la feuille "A"
-un bouton sur la feuille "A" pour afficher le userform USF

d'où la macro suivante placée dans le module du USF :
Code:
Private Sub UserForm_Initialize()
LabelImport
End Sub


et la macro suivante placée dans le Module1
Private Sub LabelImport()
Dim i As Byte
Dim Sh As Worksheet
Set Sh = ActiveWorkbook.Sheets("A")
Sh.Activate

For i = 1 To 4
    USF.Controls("Label" & i).Caption = Sh.Cells(i + 4, 1)
Next

Set Sh = Nothing

End Sub

Testes le fichier XL en pièce jointe.

A+
Kotov
 

Pièces jointes

Dernière édition:
Re : importer d'une feuille le texte des labels

Re Pierrot,
En fait, depuis un mois je suis sur un gros projet perso en VBA.
Alors je passe en coup de vent sur le forum et j'évite de me disperser.
Mais ca fait plaisir de te rencontrer.
A +
Kotov
 
Re : importer d'une feuille le texte des labels

MErci a tous c'est exactement ce que je cherchais.

En fait j'étais parti sur des nom de label sans chiffre.

A t'on besoin obligatoirement d'avoir un nom du type label2 ?

merci encore
 
Re : importer d'une feuille le texte des labels

Bonsoir Copayo,

Non, ton label n'a pas forcément besoin d'être nommé "Label" :
Tous les noms sont acceptables (à l'exception des noms réservés en VBA), en revanche, si tu veux procéder avec une boucle, tu dois naturellement lui attribuer un indice numérique.
Sinon, tu ne fais pas de boucle, et tu fais une ligne par Label

Syntaxe pour une boucle :
USF.Controls("NomDeTonChoix" & i).Caption = Sh.Cells(i + 4, 1)

A noter : le principe USF.Controls fonctionne évidemment avec les autres contrôles.


Bonne soirée
Kotov
 
Re : importer d'une feuille le texte des labels

Bonjour Copayo, Kotov, bebere

@Kotov
Petite précision, tu as également la possibilité de faire une boucle sur tous les controles, en faisant un test sur le type de controle, comme effectué dans le code que j'ai communiqué. Dans ce cas tu n'est plus obligé de faire référence à un nom. Dans ce cas, Il faut bien sur que le code s'applique à tous les controles d'un même type.

bonne journée à tous
@+
 
Re : importer d'une feuille le texte des labels

bonjour Pierrot,Kotov,Copayo
il y a aussi TypeName

Dim Ctrl As Control

For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
'ce que tu veux faire,içi
End If
Next Ctrl

à bientôt
 
Re : importer d'une feuille le texte des labels

Salut copayo
Bonjour le fil
Bonjour le Forum

il y a aussi une propriété qui n'est pas souvent utilisée et qui peut servir à plein de choses, c'est la propriété Tag

là les Contrôles s'appellent comme on veut

on met dans la propiétée tag des contrôles concernés les Numeros
exemple on a 20 Labels seuls 10 sont concernés on met dans la propriété Tag du premier Concerné 1,ensuite 2... etc etc jusqu'a 10
puis ensuite on peut boucler (non testé)
Code:
Sub Test()
Dim Ctrl as Control
Dim L as Byte
With Worksheets("Feuil1")
For L=1 to 10
   For Each Ctrl in Userform1.Controls
       If Ctrl.Tag = L then
          Ctrl.Caption=.Cells(L,1) 'ou l'inverse .Cells(L,1)=Ctrl.Caption
             Exit For
       End If
  next
Next
End with
End Sub

cette intervention m'a permis de Saluer pas mal de personnes que j'apprécie
PS je joins un fichier LoL

Le Fichier :
Bonne journée
 

Pièces jointes

Dernière édition:
Re : importer d'une feuille le texte des labels

Re

Jean Marie, ta solution est également bonne, peu être un peu plus longue à mettre en place (renseigné la propriété tag), mais elle a un plus, elle permet de filtrer certains controles d'un même type sans être obligé de tester le nom... bonne fin de journée...

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
Réponses
1
Affichages
4 K
Conrad13
C
T
Réponses
5
Affichages
4 K
TopNotch63
T
E
Réponses
2
Affichages
1 K
Ewigefrost
E
C
Réponses
6
Affichages
2 K
C
F
Réponses
5
Affichages
2 K
funwork
F
Retour