Désactiver le Zoom

Signaler
Messages postés
24
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
28 octobre 2011
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonsoir,

On peut zoomer sur une feuille au moyen de CTRL + molette souris.
Peut-on désactiver cette possibilité au moyen d'une macro ou peut-être d'un API ?

Merci d'avance pour toute réponse.

Bonnes fêtes à tous.
A voir également:

10 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,

J'ignorais l'existence de cette possibilité sous VB.Net...
C'est un progrès par rapport à VB6, c'est certain...
Le reste de cette discussion va m'intéresser au plus haut point.

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
aisé de subclasser pour subtiliser le WM_MOUSEWHEEL

a voir la confirmation de la techno utilisée

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,

pour info c'est le contrôle et non la form

toujours pour info, c'est le cas aussi sous VB6
(exemple de la richtextbox)

++
[hr]
Messages postés
24
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
28 octobre 2011

Merci pour votre intérêt, mais malheureusement nous en sommes toujours à la case départ...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Par ta faute et de ton manque de précision.

PCPT semble bien informé.

En VB6 et sur un RichTextBox ?

ok, donc la solution que j'ai suggerée devrait fonctionner... nous ne sommes donc pas vraiment au point de départ, si ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
24
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
28 octobre 2011

Bonsoir Renfield, ou plutôt bonjour, vu le décalage horaire : je suis en effet à Montevideo (Uruguay).
Je ne suis qu'un novice en VBA ; ce sont des choses qui arrivent...
Je ne suis qu'un médecin qui essaie de résoudre un "maudit" problème de présentation d'une "maudite" feuille de calculs de dilutions (d'où mon surnom "Dilueur", car nous passons notre temps à diluer des produits ou, si vous préférez, des principes actifs).
Il se peut que je me sois mal exprimé ; pourtant je pensais avoir été clair.
Je reçois des réponses soi-disant claires, peut-être pour un initié, mais pas pour un novice.
Ainsi, je vais m'exprimer autrement et vous exposer plus en détail mon problème.
1/ J'ai un classeur avec 3 feuilles.
2/ Quand je suis sur une feuille, je peux passer, en cliquant sur un bouton ActiveX, en mode "Plein Écran" ou en mode "Vue Normale".
Quand je suis en mode "Plein Écran", les lignes, les en-têtes, les onglets... bref tout ce qui ne sert à rien disparaît. En mode "Vue Normale", tout réapparaît.
3/ Quand je suis en mode "Plein Écran", les onglets portant les noms des feuilles ayant disparu, pour accéder à une autre feuille j'ai trouvé 2 solutions :
- un bouton ActiveX qui, quand on clique dessus, fait apparaître un POPUP avec la liste de toutes les feuilles du classeur ;
- une liste déroulante avec la liste de toutes les feuilles du classeur.
Personnellement, je préfère la solution des POPUP qui, quand il apparaît, devrait se trouver collé au bouton qui l'a appelé. Mais voilà, survient un "problème" :
je paramètre les coordonnées "géographiques" du POPUP suivant qu'on se trouve en mode "Plein Écran" ou en mode "Vue Normale". Mais si d'aventure je fais un zoom avec "CTRL + molette de la souris" et qu'ensuite j'appelle le POPUP, celui-ci se retrouve dans un endroit disons insolite de la feuille. N'ayant pu résoudre ce problème, je me suis dit que pour y remédier le mieux serait de bloquer le "zooming" via "CTRL + molette de la souris" et, en revanche, proposer des "zoomings" (2 ou 3) pré-déterminés (pour chacunn desquels les coordonnées des POPUP auront été déterminées) au moyen de boutons d'options par exemple.
En conséquence, je cherche une "formule magique" qui permette, dès l'ouverture du classeur, d'entraver le "zooming" qui sera évidemment libéré lors de la fermeture du classeur. Je pense qu'au moyen d'un API on peut y arriver ; en revanche, personnellement j'en suis tout à fait incapable. Je vous rappelle humblement que je ne suis que novice !
Si vous désirez que je vous envoie une copie de cette feuille, pas de problème, faites-le moi savoir.
En vous remerciant, quoi qu'il en soit, de l'intérêt que vous avez porté pour ce sujet.

Acá nos morimos de calor y donde estan, me dijeron, de frío!

En vous souhaitant à tous une excellente fête de Noël.
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Bonjour,

UcFoutu, je confirme: sous VB6 + RichTextBox, un Ctrl+MouseWheel grossit le contenu de la box. Pas essayé d'autres contrôles.

Par contre Dilueur, en lisant ton dernier Post, tu travailles non sous VB6 mais VBA (Excel) (à confirmer STP) et c'est là que tu vas avoir un problème. Comme le dit Renfield pour pouvoir récupérer l'évènement mousewheel de la souris il faut impérativement que tu aies le hWnd (le handle si tu préfères) de ton contrôle. Si celui-ci est un contrôle natif d'Excel, tu peux oublier, le hWnd n'est pas récupérable, sinon cela dépend de ce fameux contrôle. Alors lequel utilises-tu ?

Accessoirement si un admin peux déplacer ce post dans la catégorie VBA, merci.

Calade
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
ok, donc il s'agit de proscrire le zoom dans excel...

je me penche sur la question.

reste que pour passer d'une feuille a l'autre, tu peux normallement faire

Ctrl + PageUp
ou Ctrl+ PageDown


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
ok, ça fonctionne.

télécharge la dll ici
[www.vbfrance.com/codes/DLL-SUBCLASSER-RAPIDEMENT-DANS-VOS-APPLI_19625.aspx www.vbfrance.com/codes/DLL-SUBCLASSER-RAPIDEMENT-DANS-VOS-APPLI_19625.aspx]

place la dans C:\windows\System32
enregistre là via RegSvr32

Alt+F11 => Editeur VBA
Ctrl+R => Explorateur de projet

dans le code de ton ThisWorkBook

ajoute :
Option Explicit

Private WithEvents SubClasser As ReySubClasser

Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer

Private Sub SubClasser_Msg1(ByVal hwnd As Long, ByVal uMsg As Rey_SubClasser.MessageConstants, ByVal wParam As Long, ByVal lParam As Long, MsgBehavior As Rey_SubClasser.MsgBehaviorConstants, RetValue As Long, ByVal OldProc As Long)
    If (GetAsyncKeyState(vbKeyControl) And &H10000000) Then
        MsgBehavior = [MB Cancel Message]
    Else
        MsgBehavior = [MB Use Default Value]
    End If
End Sub

Private Sub Workbook_Open()
Dim hwnd As Long
    hwnd = FindWindowEx(Application.hwnd, 0, "XLDESK", vbNullString)
    hwnd = FindWindowEx(hwnd, 0, "EXCEL7", Me.Name)
    Set SubClasser = New ReySubClasser
    SubClasser.Controls.Add hwnd
    SubClasser.Messages.Add WM_MOUSEWHEEL
    SubClasser.StartSubClassing
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    SubClasser.StopSubClassing
End Sub


il te faut ensuite ajouter la dll dans
Outils > References > Rey_Subclasser

ayé, le scroll fonctionne, mais ti on presse Ctrl+Molette, el message est annulé: Excel ne sait même pas que tu a tenté un Zoom ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
exemple posté ici :

www.vbfrance.com/codes/DLL-SUBCLASSER-RAPIDEMENT-DANS-VOS-APPLI_19625.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic