Bonsoir à tous,
Je souhaiterais savoir s'il existe une méthode simple pour ouvrir une liste déroulante (Type validation de données) au survol de la souris.
Merci d'avance et bonne fin de journée !
Bonsoir à tous,
Je souhaiterais savoir s'il existe une méthode simple pour ouvrir une liste déroulante (Type validation de données) au survol de la souris.
Merci d'avance et bonne fin de journée !
Salut à toi,
Une méthode simple, je ne pense franchement pas... En passant par des API pour récupérer la position du curseur et cliquer sur ta liste déroulante afin de l'afficher quand le curseur la survole, je pense que c'est possible, mais très probablement pas "simple"
A moins qu'il y ait un moyen simple d'obtenir l'événement MouseMove sur une Worksheet, mais je ne connais pas ça
Désolé... Mais quelqu'un a peut-être une solution pour toi !!
Merci pour ta réponse Quentin ! J'ai cherché dans ton sens mais je trouve des solutions Access...
Ma demande a pour but de trouver une solution pour ouvrir plus rapidement une série de listes afin d'éviter de cliquer à chaque fois dessus.
Si l'un de vous a une idée !
Merci et bonne journée.
Bonjour,
J'ai eu une fois une fonction pour connaitre la position du curseur.
Je pense qu'avec ca tu pourras faire quelque chose:
avec ceci la postion quand tu lance la macro s'affiche pour X et Y. il suffit de mettre un if then je pense avec l'evenement mousemove de la feuille de calcul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ' Position de la souris par rapport à l'cran Private Declare Function GetCursorPos Lib "user32" ( _ lpPoint As POINTAPI) As Long Private Type POINTAPI X As Long Y As Long End Type Sub XY() Dim cel As Range, pos As POINTAPI Set cel = Range("A65536").End(xlUp)(2) GetCursorPos pos cel = pos.X cel.Offset(, 1) = pos.Y End Sub
Justement... Il n'y a pas d'événement MouseMove pour la feuille de calcul ...
Pour le fun, j'ai tenté d'insérer une image (contrôle ActiveX) sur ma feuille pour obtenir un événement MouseMove... Ca marche un peu mais c'est vraiment de la bidouille et ça ne promet pas du tout quelque chose de joli, lol.
Désolé Peut-être que quelqu'un viendra avec une solution plus prometteuse !
Ah oui exact!! désolé c'est vrai que c'est pas sur les feuille de calcul...
tiens un code qui te donne la position à tout moment!
lancer la macro XY et voilà.
il suffira avant de fermer excel de stopper la macro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINTAPI) As Long Public Type POINTAPI x As Long y As Long End Type Sub PositionXY() Dim lngCurPos As POINTAPI Do GetCursorPos lngCurPos 'Ligne temporaire pour afficehr les position. et c'est là que tu mets des if position = X Y then Range("G1").Value = "X: " & lngCurPos.x & " Y: " & lngCurPos.y DoEvents Loop End Sub
Tu peux, en bidouillant un peu, obtenir la cellule concernée par ces coordonnées à l'aide de la fonction ActiveWindow.RangeFromPoint(X,Y) qui te donne une Range (donc tu peux mettre .Select par exemple)
Attention, cette fonction sélectionne à l'aide de coordonnées "absolues" il me semble... donc par rapport à la résolution de ton écran (0,0 étant le coin supérieur gauche de l'écran, de mémoire)...
Bonjour,
Si tu pose un contrôle ActiveX sur ta feuille, tu auras alors un évènement MouseMove :
un clic sur la liste la fera disparaître à nouveau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ComboBox1.DropDown End Sub
Hervé.
Bonjour,Je souhaiterais savoir s'il existe une méthode simple pour ouvrir une liste déroulante (Type validation de données) au survol de la souris.
C'est faisable avec une méthode compliquée par le biais des Apis comme le suggère Quentin77170.
Mais avant de m'employer à construire un exemple fastidieux, je voudrais savoir si la question est-elle toujours d'actualité et si vous êtes toujours intéressé ?
Bonjour,
Survol d'une cellule: ouverture automatique d'une liste de validation
Avec la boîte à outils Contrôles:
-Créer dans la cellule B2 un label Label1 avec A.
-Modifier la propriété BackStyle avec Transparent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) [b2].Select SendKeys "%{down}" End Sub
Boisgontier
bonjour
la solution de jacques est encore la meilleure et la moins lourde
re
et pour une interreaction dynamique si il y a plusieures listes
faire la meme chose pour toutes les listes en changeant le nom du label bien entendu voir une class control label
Edit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) SendKeys "%{Up}" ' ou selection.offset(0,1).activate pour relacher la liste [b2].Select SendKeys "%{down}" End Sub
bon visiblement ma demarche ne fonctionne pas le focus du label est perdu des l'ors du dropdown
une idée jacques pour palier a ce soucis
j'ai essayer avec la touche esc aussi mais rien n'y fait le focus est sur la liste ,on est obligé de cliquer sur un choix pour lacher le focus de la liste
Excellente méthode, je n'avais pas pensé au Sendkeys !!
Par contre, je me permets de rajouter un peu de "dynamisme" à la formule à l'aide de :
Le TopLeftCell permet, comme son nom l'indique, de travailler avec la cellule dans laquelle le coin supérieur gauche du label se situe.. ainsi, il faut juste s'arranger pour que ce coin soit dans la bonne cellule et peu importe où tu places ton label, il fonctionnera ! L'idée est juste de se détacher de la notion d'adresse de cellule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Label1.TopLeftCell.Select SendKeys "%{down}" End Sub
Bonjour et merci pour vos réponses !
J'ai opté pour la solution de Jacques agrémentée de la formule de Quentin !
Merci à vous, problème résolu !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager