Problème avec une macro paramétrable

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:

Magic_Doctor

XLDnaute Barbatruc
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:

Dranreb

XLDnaute Barbatruc
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)
 

Statistiques des forums

Discussions
312 671
Messages
2 090 761
Membres
104 656
dernier inscrit
DAM2B42