|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Bonjour à tous,
Voilà, mon post précédent ici n'a pas été résolu. J'ai tenté pas mal de choses, sans succès. J'ouvre donc un nouveau topic, sachant que depuis je suis passée sous office 2010. Le problème: j'ai une zone de liste - si je clic gauche sur un item n puis droit, mon menu apparait: je selectionne l'action dans mon menu et elle s'applique bien à mon item n - si je clic droit sur un item n (sans passer par le clic gauche), mon menu apparait: je selectionne l'action dans mon menu et elle ne s'applique pas à mon item mais à l'item n-1 Code :
Merci de votre aide. |
||
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Regadre si l'événement Click se déclenche sur ta liste losrque tu sélectionne avec le bouton droit.
Si oui, demande quel item est sélectionné. Je soupsconne que le click droit n'est pas reconnu par la liste comme un événement qui la modifie. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Merci marot_r de ton aide. Mias je n'y comprends vraiment rien aux événements...
L'évenement Click se déclenche bien quand je clique avec le bouton droit et récupère le bon item n. Le problème est que l'événement Click ne dispose pas de l'argument Button, donc je ne peux pas lui dire de m'afficher le menu contextuel uniquement quand le clic est fait avec le bouton droit. Voici mon code: quel que soit le bouton cliqué, gauche ou droite, le menu contextuel apparait, l'action déclenchée en cliquant sur le menu fonctionne bien et affiche le bon item, mais est-il possible de ne faire apparaitre le menu contextuel qu'au clic droit ? Si j'utilisais mouseUp c'est que j'avais besoin de déclencher l'apparition du menu au clic droit (mouseUp dispose de l'argument Button), mais mouseUp me récupère l'item n-1... Merci pour votre aide. Code :
|
||
|
|
00
|
|
|
#4 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Citation:
Si le déclage est systématique (toujours -1) tu pourrais aller chercher l'élément sélectionné + 1. Ce n'est vraiment pas propre comme méthode mais si tu expliques pourquoi tu fais cela dans ton code et que ça marche c'est acceptable. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Aie... malheureusement, prendre le n-1, je crois que ça ne marchera pas pour le 1er, je retesterai.
Quand on veut ajouter un menu contextuel, il faut obligatoirement se servir de MouseUp (ou Down) ? Si oui, personne n'a jamais été confronté à mon problème, à savoir de ne pas récupérer la valeur sur laquelle le clic droit a été effectué ? |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Bonjour à tous,
En relisant mon post, je me dis que je me suis peut être mal exprimée Quand je dis item n-1, c'est par exemple la ligne 18 de la listbox. La ligne 18 est sélectionnée en premier, la ligne 10 en deuxième. n et n-1 ne sont pas 2 éléments successifs dans la liste mais 2 éléments sélectionnés successivement. Bref, j'ai cherché cherché et encore cherché. La seule chose que j'ai trouvé, c'est qqn dans le meme cas que moi sur un forum anglo-saxon, mais pas de réponse apportée. J'ai testé pleins de combinaisons: - before update puis mouse up - before update puis mouse down - after update puis mouse up - after update puis mouse down - mouse up qui inclut le click pour récupérer l'item - j'ai tenté de remettre à zéro la sélection avec ListIndex = -1 (ça ne surlgne plus rien mais toujours en mémoire l'item n-1 dans le mouse up) - mouse up qui déclenche menu contextuel puis clic sur le sous menu et lancement de la fonction Rien ne marche car mouse up (ou mouse down, c'est la même chose) se déclenche toujours avant before update ou after update. Donc mouse up (ou down) se déclenche avant que j'ai récupéré la bonne valeur. Avec tout ce que je vois sur les forums, je me dis que vba peut faire pleins de choses. Et je me dis aussi que ce que je souhaite faire ne parait pas invraisemblable. J'ai une zone de liste créée à partir d'une requête. Quand l'utilisateur clique droit, un menu apparait: l'utilisateur sélectionne le sous menu => une action doit se déclencher sur l'identifiant de l'item sélectionné par le clic droit (mise à jour d'une variable dans une table). Si l'utilisateur clic gauche PUIS droit, ça marche. Si l'utilisateur clic droit directement, ça ne marche pas. Why ? En espérant que vous puissiez m'aider. Peu importe la méthode utilisée: - interdire le clic droit tant que le clic gauche n'est pas fait, why not. - utiliser une sub qui, comme MouseUp, reconnait l'argument Button Merci d'avance |
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Idée de façon tordue d'arriver à tes fins :
C'est assez dégueu mais ça pourrait marcher. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
![]() Yes ! ça marche J'avais pas pensé à cette technique. J'étais restée bloquéé sur le menu à faire apparaitre dans le mouse down. là, je le fais apparaitre dans le click. un énorme à toi, tu as résolu un problème sur lequel je bloquais depuis longtemps.
|
|
|
00
|
|
|
#9 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Certe mais cela reste une façon tordue d'arriver à ses fins.
Je trouve ta méthode initiale beaucoup plus éléguante et logique. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com