Propriété label variable

Résolu
Yoyoblabla - 7 sept. 2012 à 18:01
 Yoyoblabla - 8 sept. 2012 à 08:33
Bonjours a tous!
Sur une feuille excel je dispose de plusieurs labels (label1,label2,label3...etc)
je voudrais changer leurs intitulés(facile jusque là)mais je voudrais automatiser cette manip a cause du grand nombre de label.
J'ai fais une ébauche en utilisant une boucle For mais je n'arrive pas a écrire ("label" & a).caption = "yoyo"
Si vous avez des idées je suis preneur.
A+

10 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 sept. 2012 à 18:30
Bonjour,

Me.Controle("NomControle").Caption="UnTexte"

Avec Me : pour l'objet courant ou alors à remplacer par le nopm de la UserForm.
NomControle, le nom du contrôle.
UnTexte, le texte à afficher.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 sept. 2012 à 18:39
Monjour, NHenry.
C'est parce qu'il fait chaud, que tu francises ?
Controls
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 sept. 2012 à 18:44
Bonjour Ucfoutu,

Oui, le E et le S sont proches, et parfois, ils s'échangent leur place pour embêter l'utilisateur

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
Salut
j'ai passé ma matinée a triturer la formule avec me.controle mais a chaque fois "Erreur compilation utilisation incorrecte du mot clé Me"
ci joint la macro

Sub Bouton1_Clic()
Dim a As Integer
a = 1001
'Le label sur la feuille excel s'appele Label1001
Me.Controle("Label" & a).Caption = "yoyo"
End Sub

la syntaxe est mauvaise,si tu as des idées.
A+
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai cru que tu m'avais sauvé NHenry avec ta réponse car j'ai utilisé controls avec le "S" pendant toute la matinée.
Bonjour et merci Ucfoutu pour la correction .
Il est peut plus simple de comprendre mon problème maintenant que j'ai envoyé ce bout de programme.
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 sept. 2012 à 19:35
Bonjour,

Non, ça fonctionne :
Dim i As Long
    For i = 1 To 2
        'Me.Controls("Label" & CStr(i)).Caption = Now
        Me.Controls("Label" & i).Caption = Now
    Next i


Avec 2 versions (avec et sans CStr, je te conseil avec, comme ça, tu sais ce que tu fais).

Testé sur Excel 2003.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 sept. 2012 à 19:38
Ton problème était compris.
Mai_s je vois que tce label n'est pas sur un userform, mais sur la feuille de calcul.
Ce n'est alors pas la collection Controls, mais la collection OLEObjects ...
Tu vas par contre avoir un problème, car les objets de cette collection ne connaissent pas la propriété Caption et j'ignore par quoi elle est éventuellement remplacée.

Regarde ce que fait ceci :
a = "1001"
Me.OLEObjects("Label" & a").Visible = Not Me.OLEObjects("("Label" & a").Visible

Lance plusieurs fois et tu verras. FGonctionne car la propriété Visible existe, pas la propriété Caption . Alors que le contrôle, lui, en a une !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
J'ai utilisé ta syntaxe mais ca ne marche pas!

Sub Bouton53_Clic()
Dim w As Long
Dim a As String
w = 1001
Me.Controls("Label" & CStr(w)).Caption = "yoyo"
End Sub

Des choses me perturbe dans ta réponse/
pourquoi la différence string et long??
Est_ce qu'il ne me manquerai pas quelque chose lors de l'initialisation de "bouton 53.click"(By val quelque chose)
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 sept. 2012 à 22:44
Erreur de frappe :
Correction ===>>>
Me.OLEObjects("Label" & a).Visible = Not Me.OLEObjects("Label" & a).Visible
Bien évidemment..


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
Bonjour tout le monde!
Ca y est ca marche!!!!
Je suis parti sur tes dernières informations Ucfoutu mais j'ai toujours eu le même message d'erreur.
j'ai donc isolé la chaine de caractère du nom du label pour pouvoir l'utiliser après.

Sub Bouton53_Clic()
Dim w As Long
Dim a As String
w = 1001
z = "Label" & w
Worksheets("Feuil1").OLEObjects(z).Object = "yoyo"
End Sub

Je ne peux pas expliquer pourquoi vos exemple marche chez vous et pas chez moi(j'ai excel 2007)mais je fais avec.
Merci beaucoup Ucfoutu et NHenry pour votre aide car j'ai vraiment ramé sur ce sujet
A+
3
Rejoignez-nous