<RESOLU> Affecter un code lors du clic sur un label d'un userform ?

krystof_ii

XLDnaute Occasionnel
Bonjour à tous :

j'ai créé un userform de la manière suivante :

Private Sub UserForm_Activate()
Dim Etiquette_PT() As New Classe1
Dim Poste_Technique As Control
Dim MaxPosX, PosX, PosY As Integer
Dim i As Integer

' Réactiver le rafraichissement d'écran
Application.ScreenUpdating = True
'Initialisation des positions
PosX = -125
PosY = 15
'CREATION DES COMBOBOX
ReDim Preserve Etiquette_PT(nb_Poste)
For i = 1 To nb_Poste
Set ctrl = Me.Controls.Add("Forms.Label.1")
With ctrl
.Caption = PT(i)
.Left = 10
.Top = PosY + 20
.Width = 200
.Font.Size = 10
.Font.Bold = False
.MousePointer = 10
End With
PosX = 10
PosY = PosY + 20
Set Etiquette_PT(i).C_Etiquette_PT = ctrl 'init du module de classe
Next i
End Sub

J'ai créé un module de classe (Classe1) :
Public WithEvents C_Etiquette_PT As MSForms.Label

Private Sub C_Etiquette_PT_Click()
Sheets("Cahier des Charges - FS").Range("S4") = C_Etiquette_PT.Caption
Unload Me
End Sub

J'esperai qu'avec cela, je pourrai lors du clique sur le label en question : retourner la valeur dans une cellule puis fermer ma boite de dialogue.

Mais, rien ne se passe : le clic n'est pas capté par Excel.

Sauriez-vous m'indiquer où j'ai fauté ?

Par avance merci
 
Dernière édition:

krystof_ii

XLDnaute Occasionnel
Re : Affecter un code lors du clic sur un label d'un userform ?

Ok : ci-joint un fichier exemple.

Merci
 

Pièces jointes

  • Essai Userform.xls
    42.5 KB · Affichages: 37
  • Essai Userform.xls
    42.5 KB · Affichages: 43
  • Essai Userform.xls
    42.5 KB · Affichages: 36

Yaloo

XLDnaute Barbatruc
Re : Affecter un code lors du clic sur un label d'un userform ?

Re,

C'est beaucoup plus facile avec un fichier ;)

Voici le tien modifié, j'ai mentionné les lignes que j'avais créées, modifiées ou supprimées.

A+

Martial

Edit : Salut tototiti, ma réponse n'était que pour répondre à la question (sans plus de précision...). Tout dépend ce que veut faire exactement krystof_ii
 

Pièces jointes

  • Essai Userform.xls
    55 KB · Affichages: 46
  • Essai Userform.xls
    55 KB · Affichages: 48
  • Essai Userform.xls
    55 KB · Affichages: 42
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Affecter un code lors du clic sur un label d'un userform ?

Bonsoir krystof, Bonsoir Yaloo, :)

Si je puis me permettre, pourquoi passer par des Labels ? une zone de liste (Lisbox) ne ferait-elle pas mieux l'affaire (en plus on éviterait la classe, certes utile dans certains cas mais un peu lourde si on peut s'en passer)
 

Pièces jointes

  • Essai Userform-1.xls
    42.5 KB · Affichages: 47

krystof_ii

XLDnaute Occasionnel
Re : Affecter un code lors du clic sur un label d'un userform ?

Merci a vous 2,

Les 2 fonctionnent correctement.
Mon erreur de codage est d'avoir déclaré mes labels "Etiquette_PT()" en local (dans la sub de l'userform) au lieu de la déclarer en global (avant la sub).

Pour répondre à tototiti :
Si je puis me permettre, pourquoi passer par des Labels ?
:( je n'y avais pas pensé, tout simplement. ll est vrai qu'avec listbox, le code se trouve énormément simplifié,
Par contre, je penses que je resterai dans l'utilisation des modules de classes pour des raisons graphiques : je peux placer les labels individuellement, exactement où je le souhaite. (Je trouve les éléments de ListBox trop rapproché).

Encore merci à vous 2 (je plantais depuis plus de 2h sur ce simple pb):eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 851
Membres
102 687
dernier inscrit
Biquet78