XL 2013 survol de la souris

gena

XLDnaute Occasionnel
bonjour le forum
je tente un nouveaux essaie mais cela fonctionne a un quart
je recherche comment changer la couleur des boutons en feuille 1 aux survol de la souris de gris passé aux vert ou autre couleur car je voudrais pas devoir copier 10 fois le même code pour chaque boutons
pour l'userform ok cela fonctionne très bien j'ai trouvé un code de grand maitre BOISGONTIER
comme exemple dans la feuille 2
pouvez vous m'aidé svp cela me rendrais service
avec tout ma gratitude
 

Pièces jointes

  • Classeur1vcouleur.xlsm
    27.8 KB · Affichages: 24

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gena, Danielco, Job,
Ce n'est pas bien de ne pas lire Le Grand Maître jusqu'au bout ! :)

( Bulle au survol d'une forme : http://boisgontierjacques.free.fr/pages_site/evenements.htm#MouseMove )

En utilisant des formes pour déclencher vos macros, ça marche :
20200904_174927.gif
 

Pièces jointes

  • Copie de SurvolForme.xls
    51.5 KB · Affichages: 29

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Bonsoir tout le monde,
En PJ un essai avec 5 boutons.
Je suis passer par des formes car je les trouve plus esthétiques.
A chaque bouton sont associées ces deux macros :

VB:
Private Sub Label4_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  d = 3
  If X < d Or X > Label4.Width - d Or Y < d Or Y > Label4.Height - d Then
     ActiveSheet.Shapes("Rect1").Fill.ForeColor.RGB = RGB(0, 255, 0)
  Else
     ActiveSheet.Shapes("Rect1").Fill.ForeColor.RGB = RGB(255, 0, 0)
   End If
End Sub

'Macro quand clic sur le bouton
Private Sub Label4_Click()
    ActiveSheet.Shapes("Rect1").Fill.ForeColor.RGB = RGB(0, 255, 0)
    MsgBox "Appui sur Bouton 1"
End Sub
 

Pièces jointes

  • Copie de SurvolForme 2.xls
    66 KB · Affichages: 19

patricktoulon

XLDnaute Barbatruc
ben il n'y en a pas because c'est le mouvement d'un autre élément qui doit déclencher le retour alors quand tu passe sur un autre c'est possible mais quand tu es sur la feuille ben c'est walouh
peut etre une rechap avec un timer mais c'est très BOF
en général ça se passe mieux dans un userform
la solution serait de mettre tes 10 bouton sur un label transparent
le move de ce label remettrais le dernier passé en vert en rouge
de ce fait tu dégage cette méthode du x et y qui est bidon


donc dans le thisworkbook
on reprends le code et on ajoute le label qui nous sert de fond derrière les boutons
dans chaque instance de la classe pour les boutons

VB:
Option Explicit
Dim CB() As New Classe1

Private Sub Workbook_Open()
Dim o As OLEObject, n%
For Each o In Feuil1.OLEObjects
    If TypeName(o.Object) = "CommandButton" Then
        ReDim Preserve CB(n)
        Set CB(n).CB = o.Object
        Set CB(n).lab = Feuil1.OLEObjects("Label1").Object
        n = n + 1
    End If
Next

End Sub
la classe
VB:
Option Explicit
Public WithEvents CB As MSForms.CommandButton
Public WithEvents lab As MSForms.Label
Public old As Object
Private Sub CB_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CB.BackColor = vbgreen
    Set old = CB
End Sub

Private Sub Lab_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Not old Is Nothing Then old.BackColor = vbRed
End Sub
démonstration
demo5.gif


en fonctionnement
demo6.gif
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 107
dernier inscrit
cdel