Changer couleur Commandbutton

  • Initiateur de la discussion Initiateur de la discussion Marco60
  • Date de début Date de début

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 !

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
 
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
 
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
 
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
 
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
 
- 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

Discussions similaires

Réponses
4
Affichages
332
Réponses
17
Affichages
1 K
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
522
Retour