Bloquer le défilement par la souris

Bonjour,

Je travaille sur un tableur avec des boutons Macro qui permettent de naviguer sur plusieurs parties d'une même feuille.

J'aimerai empêcher tout défilement de la feuille en dehors de l'utilisation des boutons.

Du coup j'ai désactivé les barres de défilement, par contre l'utilisateur a toujours la possibilité de "scroller' avec sa souris.

Auriez-vous une astuce pour empêcher le défilement par la souris ?

La fonction classique "ScrollArea" ne semble pas adapté puisqu'elle empêche également le déplacement via les boutons.

Merci d'avance,

Guillaume

Bonjour,

Hum... c'est un peu jouer aux apprentis sorciers là... Le scroll de la souris est une fonctionnalité gérée par windows.
J'imagine recevoir un fichier et m'apercevoir que la souris ne réagit pas.... souris en panne ou autre chose ?

Si vous voulez que l'utilisateur ne se déplace que dans l'espace alloué, pourquoi ne masquez-vous pas tout simplement les colonnes et lignes non utilisables ?

Pensez aussi à mettre vos boutons en ligne 1, puis à utiliser l'option "figez les volets". En procédant de cette manière, vos boutons seront toujours apparents en haut de votre feuille même si vous "scroller" avec la souris

Cordialement

Bonjour,

Merci de votre réponse.

Concernant votre deuxième proposition, en fait c'est comme cela que je fonctionne.

J'ai un espace figé en haut à gauche dans lequel mes boutons sont toujours apparents. En utilisant ces boutons l'utilisateur peut déplacer les colonnes (ou les lignes) suivant les boutons pour afficher différents contenus, en ayant toujours accès aux boutons en haut à gauche.

ça fonctionne très bien, la seule chose c'est que l'utilisateur peut également se déplacer en ligne et en colonne en utilisant le scroll de la souris, et également les flèches de son clavier d'ailleurs.

L'idée serait donc de bloquer toute possibilité de déplacement en ligne/colonne hormi via l'utilisation des boutons.

Pensez-vous que ce soit possible ?

Peut être en associant la zone utilisable lors du click sur le bouton. J'ai déjà utilisé ce procédé il y a quelques années mais bon abandonné par la suite car trop contraignant. (j'avais d'ailleurs oublié ce truc en vous répondant à mon post précédent)

Exemple : si bouton 1 concerne la zone A1 à F10, vous mettez cette instruction dans votre code associé au bouton 1

Worksheets(nom de l'onglet).ScrollArea = "a1:f10"

A voir si cela vous convient mais cette manière va bloquer la souris et les flèches clavier.
Si vous associez une autre plage à votre bouton 2, la plage du bouton 1 sera inaccessible au profit de celle du bouton 2

Pour le réduire le scroll complètement sur la feuille ->

Worksheets(nom onglet).ScrollArea = "A1"

Bonjour,

Vous pouvez créer une macro évènementielle qui détecte la cellule sélectionnée, si celle-ci se trouve en dehors de la plage prédéfinie, alors on force la sélection d'une cellule comprise dans la plage. Exemple, macro dans le module de la feuille, si la cellule sélectionnée est en dehors de la plage A10:J10:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column > 10 Or Target.Row > 10 Then Range("A1").Select
End Sub

Cdlt

Salut

Pour les tapes de clavier tu peux utiliser : Application.OnKey "{LEFT}", "revenir a la position initial == range.select .. ou encore ActiveWindow.ScrollRow = 10

Pour la souris tu peux utiliser : les évènements de la souris sur les contrôlés :

tu place une contrôle ou une image en derrière blanc des boutons et tu utilise encore : "revenir a la position initial == range.select .. ou encore ActiveWindow.ScrollRow = 10

Bonjour Amir,

c'est un peu bidouille cela il me semble
Selon ses explications, il veut en fonction du click d'un bouton, n'avoir accès qu'à une plage définie et ne pas pouvoir en sortir sans click sur un autre bouton .
La proposition que je lui ai faite fonctionne très bien.
Maintenant sans voir son fichier ...

Salut Dan

Tu as raison, si mon proposition est fonctionnelle la tienne est plus optimisée est courte ,

Ca vient de fait que j concentre sur les évènements de la souris et encore même je n est jamais travailler avec ScrollArea

Et autre chose ma proposition a autre problèmes à régler : Par exemple il ne peut pas utiliser les touches comme {LEFT} s’il est sur une plage à modifier.

Tu as raison Dan

EDIT: Pourquoi faire compliqué quand on peut faire simple

Excellent !

Merci pour vos retours, j'ai associé à mes boutons de déplacement une ScrollArea qui verrouille l'utilisateur jusqu'à ce qu'il clique sur un autre bouton.

C'est parfait

Merci à tous pour vos astuces :) !

Belle journée

Bonjour

Très bien

Cordialement

Rechercher des sujets similaires à "bloquer defilement souris"