Problème avec une macro paramétrable

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 !

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai une routine qui revient fréquemment :
VB:
[CR50].Select: Selection.Interior.Color = Label1.BackColor
Application.Dialogs(xlDialogPatterns).Show
If Label1.BackColor <> [CR50].Interior.Color Then
    Label1.BackColor = [CR50].Interior.Color: Label1.Caption = "OK"
    Label1.ForeColor = IIf(Int(Label1.BackColor / 256) Mod 256 > 128, vbBlack, vbWhite)
End If
pour plusieurs "Labels" ("Label1", "Label2"...) contenus dans un même USF.

Pour simplifier, j'ai tenté d'écrire la macro paramétrable suivante :
VB:
Sub ModifLabel(x as byte) 'x est le numéro (suffixe) du "Label"
[CR50].Select: Selection.Interior.Color = "Label" & x.BackColor
Application.Dialogs(xlDialogPatterns).Show
If "Label" & x.BackColor <> [CR50].Interior.Color Then
    "Label" & x.BackColor = [CR50].Interior.Color: "Label" & x.Caption = "OK"
    "Label" & x.ForeColor = IIf(Int("Label" & x.BackColor / 256) Mod 256 > 128, vbBlack, vbWhite)
End If
End Sub
afin de n'avoir qu'à écrire "ModifLabel (1)" pour le "Label1", "ModifLabel (2)" pour le "Label2"...

Bon, ça ne marche pas du tout.
Comment s'y prendre pour résoudre ce problème ?

Merci d'avance pour tout commentaire.
 
Dernière édition:
Re : Problème avec une macro paramétrable

Bonjour youky(BJ),

Ça marche maintenant très bien.
VB:
Sub ModifLabel(x As Byte)
'Magic_Doctor / youky(BJ)
    [CR50].Select: Selection.Interior.Color = Controls("Label" & x).BackColor 'la cellule "CR50" prend la couleur de "Labelx" (<=> couleur texte famille)
    Application.Dialogs(xlDialogPatterns).Show 'montre la palette de couleurs dont la couleur sélectionnée par défaut est celle de la cellule "CR50" qui vient de prendre la couleur du "Labelx"
    If Controls("Label" & x).BackColor <> [CR50].Interior.Color Then 'si on a choisi, pour la cellule "CR50", une nouvelle couleur dans la palette de couleurs
        Controls("Label" & x).BackColor = [CR50].Interior.Color: Controls("Label" & x).Caption = "OK" 'le "Labelx" prend la nouvelle couleur de la cellule "CR50" ; "OK" apparaît dans le "Labelx"
        Controls("Label" & x).ForeColor = IIf(Int(Controls("Label" & x).BackColor / 256) Mod 256 > 128, vbBlack, vbWhite) 'adapte la couleur de la police à celle du "Labelx"
    End If
End Sub
Bonne fin d'après-midi.
 
Dernière édition:
Re : Problème avec une macro paramétrable

Bonsoir

Pourquoi ne transmettez vous pas carrément le label lui même au lieu d'être obligé de le reconstituer dans la procédure à partir de son nom :
VB:
Sub ModifLabel(ByVal Lab As MsForms.Label)
 
- 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
Retour