Bonjour à tout le forum.
Je suis confronté à une difficulté.
Dans une fenêtre d'application avec 3 vues de classeur dont l'une des vues est fractionnée en 4 volets, j'aimerais pouvoir intercepter les Scrolls effectués par l'utilisateur.
Comment?
Bonjour à tout le forum.
Je suis confronté à une difficulté.
Dans une fenêtre d'application avec 3 vues de classeur dont l'une des vues est fractionnée en 4 volets, j'aimerais pouvoir intercepter les Scrolls effectués par l'utilisateur.
Comment?
Bonjour,
Je crains qu'on ne puisse solutionner votre demande en VBA. Peut être qu'un contributeur averti viendra me détromper.
******
Cependant, en faisant de la programmation Windows (usage des APIs), il y a des chances d'y arriver mais cela est compliqué et n'est pas d'une lecture facile et compréhensible.
Si vous êtes intéressé et que cela en vaille la peine, dites le moi, j'ai une idée de ce qu'il faut faire.
bonjour
Merci de s'intéresser à la question.
Les idées avec les APIS m'intéressent. J'avais effectué une recherche de ce côté.
Une réponse de medev dans cette discussion #2 http://www.developpez.net/forums/d89...scroll-resolu/ m'avait inspiré à aborder le problème sous un autre angle.
La solution que j'ai mis en oeuvre actuellement ne me dit pas grand chose:
une boucle avec un Timer initialisé à 0.4
Je me demandes si c'est idéal.
Bonjour,
Pouvez-vous m'adresser un message privé avec votre adresse E-mail pour que je puisse vous répondre ?
Si vous désirez rester anonyme, créez une adresse E-mail temporaire.
Ceci pour éviter d'encombrer inutilement le forum avec mes tentatives de résolution qui risque de ne pas aboutir dans l'immédiat.
***
C'est très compliqué et il faudra également s'occuper des évènements de la roulette de la souris.
Il faut, dans un premier temps :
1) identifier les Windows Class Excel
2) faire un SubClassing (Hook) et une procédure de rappel (CallBack)
3) créer des évènements (Event, RaiseEvent)
4) créer un timer avec les APIs SetTimer, KillTimer
A plus.
Bonjour,
et merci encore pour ton aide.
Je penses qu'il est préférable de faire marcher la discussion si l'idée doit évoluer.
Afin que d'autres puissent y mettre du sien, ou y trouver une résolution à un problème semblable qu'ils auraient.
Alors je dois d'abord expliquer un peu plus clairement le problème, qui m'a conduit à construire un Objet de surveillance de zones affichées dans une des fenêtres afin d'agir conséquemment sur les deux autres.
Le but final en fait est d'analyser le temps mort effectué dans l'affichage pour lire un passage ou observer une image.
Une statistique pour déterminer l'intérêt de l'utilisateur sur ces consultations du classeur.
_Première solution que j'ai abandonné:
- Pour être tranquille j'avais commencé par désactiver l'Affichage des Contrôles ScrollBar des fenêtres du classeur afin d'obliger la navigation avec le clavier me permettant d'avoir simplement les évènements que je souhaites.
- Cela semble avoir des répercussions pas appréciés dans l'aisance de la navigation. Le contrôle Visuel qu'est le ScrollBar est utile pour que l'utilisateur soupçonne rapidement que le reste de la page peut être défilée.(sans compter les reflexes Souris en plus...)
_Deuxième solution sur laquelle j'ai buté d'emblée:
- La Fenetre Excel ne fournissant pas un évènement clic sur Ses ScrollBars (à juste titre), je les gardes masquer et je places mes contrôles ScrolBars qui génèrent un clic.
- Le problème est qu'au moins un des volets et une des fenêtres doivent être scrollés horizontalement.
- Et les propriétés Orientation du contrôle ne sont pas disponibles.
- Serait-il possible de le rendre disponible?
_Troisième solution que j'ai adopté pour le moment:
- C'est de créer ma propre Classe de Controle d'affichage et qui me permet du coup de laisser visible les ScrollBars de la fenêtre d'Excel qui son bien implémentés.
- Le coeur du code est basé sur une boucle branché sur une valeur booléenne, avec un DoEvents permettant de passer la main aux autres processus de l'application.
- A chaque itération vérification des valeurs d'affichage précédemment stockés
Je publierais le code de cette classe à mon prochain retour pour que tu me dises s'il y a d'autres solutions plus acceptables avec les API ou sans.
Merci
S'il s'agit d'un contrôle ScrollBar (Barre de défilement) inséré en tant qu'OLEObject dans la feuille Excel, la propriété Orientation existe bel et bien.Et les propriétés Orientation du contrôle ne sont pas disponibles.
Serait-il possible de le rendre disponible?
Pour obtenir l'horizontalité :
1) en mode création, sélectionnez l'objet
2) faites un clic droit dessus et cliquez sur "Propriétés"
3) dans la liste des propriétés, en face de la propriété "Orientation" choisissez "1 - fmOrientationHorizontal"
****
Mais je penche plutôt pour une solution par le biais des APIs. J'y réfléchis.
Partager