Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) _MouseMove

12 réponses
Avatar
j-pascal
Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP

10 réponses

1 2
Avatar
MichDenis
Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP
Avatar
Jacques93
Bonjour j-pascal,

Comment, et où, déclare tu la variable centre. Le code suivant marche
très bien (j'ai réduit la zone inactive à 5 pixels, en bordure)


Dim centre As Boolean

Private Sub Toto_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
If X < 5 Or X > toto.Width - 5 Or Y < 5 Or Y > toto.Height - 5 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un
moyen de faire apparaître un "Shape" au passage du pointeur de la souris
sur un bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec
un code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP





--
Cordialement,

Jacques.

Avatar
AH60
Bonjour à vous deux
dans le même sujet si vous permettez
pour MichDenis : y a t-il un autre moyen de faire apparaitre un Shape au
passage du pointeur de la souris sur une cellule ? pas un commentaire
merci

Abed_H




Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP






Avatar
MichDenis
Directement, non. il n'y a pas d'événement prévu par excel pour
faire ce type de chose...dans la feuille, tu peux ajouter un contrôle "Label"
issu de la barre d'outils "Contrôle" au dessus d'une cellule déterminée et
tu aurais le même comportement que l'exemple avec le formulaire :

'-------------------
Private Sub Label1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

End Sub
'-------------------


"AH60" a écrit dans le message de news:

Bonjour à vous deux
dans le même sujet si vous permettez
pour MichDenis : y a t-il un autre moyen de faire apparaitre un Shape au
passage du pointeur de la souris sur une cellule ? pas un commentaire
merci

Abed_H




Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP






Avatar
AH60
Merci MichDenis et bonne nuit



Directement, non. il n'y a pas d'événement prévu par excel pour
faire ce type de chose...dans la feuille, tu peux ajouter un contrôle "Label"
issu de la barre d'outils "Contrôle" au dessus d'une cellule déterminée et
tu aurais le même comportement que l'exemple avec le formulaire :

'-------------------
Private Sub Label1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

End Sub
'-------------------


"AH60" a écrit dans le message de news:

Bonjour à vous deux
dans le même sujet si vous permettez
pour MichDenis : y a t-il un autre moyen de faire apparaitre un Shape au
passage du pointeur de la souris sur une cellule ? pas un commentaire
merci

Abed_H




Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP











Avatar
j-pascal
Bonsoir,

Merci, mais on est d'accord que je peux appeler "toto" ce que tu nommes
"CommandButton1" ??
Alors (si oui) je ne vois pas la différence avec "mon" code !!

Est-ce que le fait que le "bouton" soit sur un UF a une incidence ? Ou
encore la protection de la feuille ?

JP


"MichDenis" a écrit dans le message de news:

Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP





Avatar
j-pascal
Re,

Je viens de mettre le code dans le module de feuille ... ça ne fonctionne
pas non plus !
J'ai vraiment le "pressentiment" que le problème vient du fait que le
"bouton survolé" n'est pas directement sur la feuille mais sur un UF ...

JP

"MichDenis" a écrit dans le message de news:

Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP





Avatar
j-pascal
Bonsoir Jacques,

Ton bouton est-il sur un UF ?

Les essais que j'ai fait fonctionnent également, mais le pb semble être le
UF (voire la protection de la feuille ??) ...

@+ ?

JP

Si je n'avais pas déclaré la variable, j'aurais eu (avec Option Explicit !)
une fenêtre de débogage ... c'est pour cela que j'ai précisé que je n'en
avais pas eue)

"Jacques93" a écrit dans le message de news:

Bonjour j-pascal,

Comment, et où, déclare tu la variable centre. Le code suivant marche très
bien (j'ai réduit la zone inactive à 5 pixels, en bordure)


Dim centre As Boolean

Private Sub Toto_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
If X < 5 Or X > toto.Width - 5 Or Y < 5 Or Y > toto.Height - 5 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un
moyen de faire apparaître un "Shape" au passage du pointeur de la souris
sur un bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec
un code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP





--
Cordialement,

Jacques.



Avatar
j-pascal
Finalement, j'ai réactivé le code dans le code du UF ...

Ce n'est pas la protection de la feuille qui coince, mais par contre, il
faut "déprotèger" la feuillle pour faire disparaître les "Shapes" et ensuite
la reprotéger ; le code fonctionne alors (apparemment) normalement !

JP


"MichDenis" a écrit dans le message de news:

Si dans ton formulaire, tu as un bouton de commande dont
le nom est commandbutton1 et que dans la feuille active
tu as une shape au nom de toto, la procédure qui suit
fonctionne très bien.

En fait, elle rend visible la shape seulement lorsque la souris
se déplace a l'intérieur du bouton de commande, il y a une petite
bordure autour du bouton qui ne fait pas réagir la shape


'-------------------------
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X < 10 Or X > CommandButton1.Width - 10 Or Y < 10 Or _
Y > CommandButton1.Height - 10 Then
ActiveSheet.Shapes("toto").Visible = False
Else
ActiveSheet.Shapes("toto").Visible = True
End If
End Sub
'-------------------------



"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai trouvé (désolé pour l'auteur, je ne me souviens plus où ...) un moyen
de faire apparaître un "Shape" au passage du pointeur de la souris sur un
bouton ...

Mon "Shape" s'intitule "Aide2"
"Toto" est le nom du bouton,

Ci-après le code :

'------------------------
Private Sub Toto_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer,
ByVal X As Single, ByVal Y As Single)
If X < 10 Or X > Toto.Width - 10 Or Y < 10 Or Y > Toto.Height - 10 Then
If centre = True Then
entrée = False
centre = False
ActiveSheet.Shapes("Aide2").Visible = False
End If
Else
ActiveSheet.Shapes("Aide2").Visible = True
centre = True
End If
End Sub
'------------------------

Problème : Ca ne fonctionne pas !
A noter que :
- le bouton "Toto" se situe sur un UF
- la feuille est protégée par la macro
- aucun message de débogage
- j'ai mis le code dans le module du UF et j'ai même fait un essai en le
mettant dans un module "normal"
- le survol du bouton est sans effet, les "Shapes" (car j'en ai 4, avec un
code adapté ...) restent tous affichés sur la feuille ...

Merci d'avance pour votre aide,

Cordialement,

JP





Avatar
Jacques93
Bonsoir Jacques,

Ton bouton est-il sur un UF ?


Oui

Les essais que j'ai fait fonctionnent également, mais le pb semble être
le UF (voire la protection de la feuille ??) ...



Quel type de protection mets tu sur la feuille ?
Avec les options par défaut ça fonctionne.


Si je n'avais pas déclaré la variable, j'aurais eu (avec Option Explicit
!) une fenêtre de débogage ... c'est pour cela que j'ai précisé que je
n'en avais pas eue)


Je n'avais pas vu que tu avais précisé Option Explicit

--
Cordialement,

Jacques.

1 2