Changer couleur Commandbutton

Marco60

XLDnaute Occasionnel
Bonjour le forum,
j'ai trouvé sur le site la macro VBA pour qu'un commandbutton change de couleur quand la souris passe dessus.

Ce que je souhaite maintenant, c'est que si l'utilisateur ne clique pas sur ce bouton, qu'il reprenne sa couleur d'origine.


Merci de votre aide

A+

Marc
 

Jacques87

XLDnaute Accro
Bonjour Marco

En supposant que ton bouton soit dans un userform, voici le code à écrire dans l'userform

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = vbRed
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = vbGreen
End Sub

Bon dimanche
 

Marco60

XLDnaute Occasionnel
Salut Jacques87,
Merci pour cette petite macro que je pensais plus compliquée que cela. Je n'y est même pas pensé.

Peux-tu m'expliquer alors à quoi sert la macro suivante que je n'ai pas dû comprendre comme il se doit :
Private Sub Mise_forme(numero As Byte)
Dim Ctrl As Control

For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.Label Then
With Ctrl
.Font.Size = 14
.ForeColor = &HFF8080
.BackColor = &H80000016
End With
End If
Next

With Controls('Label' & numero)
.Font.Size = 16
.ForeColor = &H800080
.BackColor = &H80000013
End With

End Sub

Et cette macro est suivie de celle-ci :
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Mise_forme 1
End Sub
 

Jacques87

XLDnaute Accro
Re marco

En fait on t'a donné une macro et une procédure évenementielle.

La procédure appelle la macro en spécifiant la valeur de la variable 'numéro'

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single,
ByVal Y As Single)
Mise_forme 1
End Sub


cette procédure se déclenchera dès que tu passera ta souris sur le control Label1 et elle attribue la valeur 1 à 'numéro' en appelant la macro 'Mise_forme' suivante

Private Sub Mise_forme(numero As Byte)
Dim Ctrl As Control


on appelle donc cette macro et rappelle toi la variable 'numéro' vaut 1
remarque : l'intérêt de procéder comme ceci, c'est que tu peux utiliser cette macro autant de fois que tu le veux et avec des controls différents (il suffira dans l'appel de préciser le numéro du control sur lequel tu veux agir)

For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.Label Then
With Ctrl
.Font.Size = 14
.ForeColor = &HFF8080
.BackColor = &H80000016
End With
End If
Next



on commence par 'balayer tous les controles de ton userform de type 'Label' pour lesquel on déterminera leur couleur de fond, de caractère et taille des caractères

With Controls('Label' & numero)
.Font.Size = 16
.ForeColor = &H800080
.BackColor = &H80000013
End With


et enfin pour le control 'Label1' on modifiera ces paramètres (mais une fois pour toute)

End Sub

Voila, j'espère avoir été assez clair et reste à ta disposition

Cordialement
 

Marco60

XLDnaute Occasionnel
Merci, Jacques, pour ces explications. c'est maintenant beaucoup plus clair dans ma tête.

Faut dire que cela ne fait que 4 mois que je suis dans le VBA et ce n'est pas évident de tout assimiler d'un coup.

Mais grace à ce forum, on progresse vite.

Merci encore et A+

Marc
 

Discussions similaires

Réponses
2
Affichages
184

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi