XL 2013 un seul code pour plusieurs labels click

RENAUDcyrille

XLDnaute Nouveau
Bonjour
petit autoditacte sur le VBA, généralement en fouillant dans le site, je trouve mon bonheur pour bricoler des mini programme.
Mais là je sèche. Donc je vous fais un appel direct pour m'aider.
Voici mon soucis : j'ai une userform dedans j'ai une multipage et dans chaque page j'ai plusieurs Label.
Je voudrais quand je clique sur un label qu'il change de couleur et si je reclique il revient à sa couleur.
Pour un label j'ai réalisé un mini code :
"Private Sub Label10_Click()
If Label10.BackColor = &H8000000F Then
Label10.BackColor = &H8000000D
Exit Sub
Else
Label10.BackColor = &H8000000F
Exit Sub
End If

End Sub"

mais je me vois pas faire un copier coller de ce code pour les centaines de label (il y en aura plusieurs dizaine par page)

Merci pour votre aide.
Je vous joint le début du fichier en exemple. attention dedans il y a un module et un module de classe (et un bout de programme, en début du code de la userform), des codes que j'ai récupérè sur le site pour faire afficher le nom du label mais j'arrive pas à modifier pour faire changer la couleur (fonctionne avec les label 10-11-12 dans la page 1 uniquement)
 

Pièces jointes

  • suivi client.xlsm
    23.2 KB · Affichages: 8
Solution
C
Bonsoir RENAUDcyrille

Très bien déjà d'avoir pensé à un module de classe 👍 très peu connaissent
bon il reste encore un peu de travail sur comment l'utiliser ;)

Voici le fichier modifié

A+
C

Compte Supprimé 979

Guest
Bonsoir RENAUDcyrille

Très bien déjà d'avoir pensé à un module de classe 👍 très peu connaissent
bon il reste encore un peu de travail sur comment l'utiliser ;)

Voici le fichier modifié

A+
 

Pièces jointes

  • RENAUDcyrille_suivi client.xlsm
    24.9 KB · Affichages: 10

patricktoulon

XLDnaute Barbatruc
bonsoir
c'est quoi que tu veux exactement
  1. le label qui change de couleur au click façon bouton toupie
  2. ou que le click dans label change la couleur et remette le précédent cliqué avec son ancienne couleur
quels sont les labels a prendre en compte
ton exemple de fichier est plus que brouillon
faut faire plus d'efforts dans vos demandes ;)
 

Deadpool_CC

XLDnaute Accro
Bonsoir,
de ce que j'ai compris il veut une fonction qui si on clic sur un label cela switch la couleur
il semble dire qu'il va avoir plein de label et qu'il veut qu'une seule fonction fasse le job plutot que de traiter dans les Sub label_clic de chaque.
Après s'il traite uniquement certain label a lui de les nommer correctement et dans cette fonction unique de tester le nom du label ... lol
Voila ce que j'ai compris.
Après j'ai pas de solution car je ne saisi pas comment intercepter un clic, vérifier que c'est un clic sur un label ... moi suis toujours passé par les fonctions événementielles proposées par défaut pour chaque objet ... lol
 

RENAUDcyrille

XLDnaute Nouveau
Merci Bruno. C'est ce que je recherchai.

Pour le fichier en mode brouillon c'est normal je le commence juste et comme je vais avoir plus de 500 checkbox et 200 labels, je fais mes tests à petite échelle.
Quand j'aurais toutes les procédures par rapport à ce que je veux faire du fichier, la je consoliderais et annoterais le fichier et le code.

Encore merci.
 

patricktoulon

XLDnaute Barbatruc
Merci Bruno. C'est ce que je recherchai.

Pour le fichier en mode brouillon c'est normal je le commence juste et comme je vais avoir plus de 500 checkbox et 200 labels, je fais mes tests à petite échelle.
Quand j'aurais toutes les procédures par rapport à ce que je veux faire du fichier, la je consoliderais et annoterais le fichier et le code.

Encore merci.
re
par expérience (et e ne serais pas le seul a te le dire ) 500 chexbox et 200 labels ca fait beaucoup
il y a certainement une façon de faire autrement

mais si tu y tiens voici un exemple simplissime
met tout les labels que tu veux dans les pages du multipage
et dans le tag des labels met "x"

ca demarre comme ca dans le userform
VB:
Option Explicit
Dim cls As New classLabel
Private Sub UserForm_Activate()
cls.initLabel Me
End Sub
et dans un module classe que j'ai nomé "classLabel"
VB:
Option Explicit

Public WithEvents lab As MSForms.Label
Dim cls() As New classLabel

Function initLabel(uf)
   Dim CtrL As MSForms.Control, A&
   For Each CtrL In uf.Controls
        If CtrL.Tag = "x" Then
            A = A + 1: ReDim Preserve cls(1 To A): Set cls(A).lab = CtrL
        End If
    Next
End Function

Private Sub Lab_Click()
lab.BackColor = Array(&H8000000D, &H8000000F)(Abs(lab.BackColor = &H8000000D))
End Sub
et voila tu aura le switch color sur tes labels
 

Pièces jointes

  • label colorswitch.xlsm
    22.5 KB · Affichages: 12

Deadpool_CC

XLDnaute Accro
Salut,
500 check box cela commence à ressembler à un usine à gaz ... il serait pas mieux de gérer cela dans un tableau normal (en protection cellule pour ce qui ne doit pas être modifiable, et tes colonnes équivalentes au checkbox non protégé)
comme cela l'utilisateur peut sélectionner plusieurs cellules d'un coup pour y mettre un "x" simplement ...

je sais pas quel est l'objectif mais faire un userform à rallonge complique bien souvent la tache à l'utilisateur final.
Bon courage
 

RENAUDcyrille

XLDnaute Nouveau
J'ai penser passer par un tableau excel. Mais l'utilisateur final n'est pas un pro informatique. Voir elle fait bugger un ordi rien quand appuyant sur la touche allumage ;)
Donc passer par une userform me permet de le rendre utilisable par cette personne car je dois transformer un document de 4 pages pour éviter un surconsommation de papier.
Certe je risque d'avoir plus de temps à mettre en forme qu'à faire le programme :) mais bon c'est pour une bonne cause. ;)
 

Statistiques des forums

Discussions
312 169
Messages
2 085 925
Membres
103 043
dernier inscrit
nouha nj