IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Activer molette de souris dans Access 2003


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Activer molette de souris dans Access 2003
    Bonjour,

    On retrouve partout sur le net comment bloquer la molette de la souris dans Access pour éviter qu'elle fasse défiler les enregistrements, et les solutions marchent sans problèmes. Par contre comment faire pour que la molette agisse sur la barre de défilement verticale qui apparait lorsque ma Form est plus longue que l'écran ?
    Il y a bien l'évenement Form_MouseWheel mais je ne sais pas quoi en faire. Les propriétés de la Form ne propose pas "scrollup" ou "scrolldown", seulement "scrollbars".

    D'avance, merci pour votre aide

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Salut,

    Si tu as déjà capturé l'événement de la souris alors le plus dur est fait!

    Pour piloter le défilement :

    1 - en en-tête de module :
    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
    19
    20
    21
    22
     
    ' Constantes pour le type de scrolling
    Private Const WM_HSCROLL = &H114
    Private Const WM_VSCROLL = &H115
    ' Constantes pour les commandes
    Private Const SB_LINEUP = 0
    Private Const SB_LINELEFT = 0
    Private Const SB_LINEDOWN = 1
    Private Const SB_LINERIGHT = 1
    Private Const SB_PAGEUP = 2
    Private Const SB_PAGELEFT = 2
    Private Const SB_PAGEDOWN = 3
    Private Const SB_PAGERIGHT = 3
    Private Const SB_THUMBPOSITION = 4
    Private Const SB_THUMBTRACK = 5
    Private Const SB_TOP = 6
    Private Const SB_LEFT = 6
    Private Const SB_BOTTOM = 7
    Private Const SB_RIGHT = 7
    Private Const SB_ENDSCROLL = 8
    ' Déclaration de l'API
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    2 - là où tu veux agir sur le scrolling :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SendMessage Me.hWnd, WM_VSCROLL, SB_LINEDOWN, 0&
    pour descendre d'une ligne par exemple

    Bye.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut,

    Merci Arkham46, c'est exactement ce que je cherchais ! Ca se combine parfaitement avec l'évènement "Form_MouseWheel".
    Il ne me reste plus qu'à trouver une solution pour pouvoir faire défiler la Form tout en empêchant le défilement des enregistrements.

    Encore merci !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    Salut je ne suis pas un expert , le code est à placé tel quel dans un module dans vb, ca ok

    Après je comprend pas :
    là où tu veux agir sur le scrolling :
    Code:

    SendMessage Me.hWnd, WM_VSCROLL, SB_LINEDOWN, 0&


    pour descendre d'une ligne par exemple
    cette portion de code , il faut la mettre ou pour que ca agisse sur le formulaire ??


    ( je précise je n'utilise pas la dll pour bloquer les défilements des enregistrements)

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Si tu vois Me.

    ça veut dire qu'il faut que ce code et les déclarations API soient dans le module du formulaire.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    désolé d'être lourd , qu'est que le module du formulaire ??

    c'est par exemple Form_general dans VB non ? pour mon formulaire qui se nomme Form general ...

    si je met les deux code ici rien ne se passe !

    j'ai du mal à saisir, c'est comme dans excel je met les macros dans les feuilles , et après je les appelle ou les fait s'excuter , mais la je vois comment se passe l'appel de macro dans access ..

    aie je comprend pas ca fonctionne .. les macros dans excel ca m'allait bien , mais dans access suis paumé ....

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    Je comprend pa strop :
    Salut,

    Si tu as déjà capturé l'événement de la souris alors le plus dur est fait!
    il y a une autre partie de code en dehors des deux autres ..

    je n'arrive pas à le faire fonctionner

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Qu'est ce que tu veux faire au juste??

    Il n'est pas très clair ton problème.

    En plus si tu relance des questions dans un post tagué [résolu] t'as beaucoup de chance que personne n'ouvre ton message....

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    oui d'accord mais j'ouvre un deuxième sujet pour la même chose ... pas terible.



    Qu'est ce que tu veux faire au juste??
    Je voudrais avoir la barre de défilement verticale qui marche avec la molette de la souris dans un formulaire.

    Celui-ci étant plus grand que l'écran.

    je me suis apercu que cela fonctionnait mais quand mode création de formulaire.

    Si il faut ouvrir un autre sujet je l'ouvrirai.

    Merci

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    ok compris le problème.

    Mais voilà daspoon lui avait un événement form_mousewheel qui n'existe que dans les versions récentes d'access (en tout cas en 2000 y a pas).

    Si tu n'as pas cet événement il faut utiliser la FAQ pour créer l'événement manquant mais comme la dll ne donne pas d'info sur le sens du défilement tu ne peux pas faire défiler l'ascenseur dans le sens voulu....

    La solution que j'entrevois serait de recompiler une dll en ajoutant le sens de défilement dans l'événement pour pouvoir piloter l'ascenseur comme tu veux.

    Sinon il faut programmer un hook entièrement dans access mais c'est pas simple non plus et ça a la facheuse tendance à rendre l'application instable, notamment quand tu ouvres l'éditeur vba ça risque de crasher l'appli.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    Salut Merci , Arkham46

    Pour ma part l'application tourne sous Access 2002 , mais la base est en enregisté en format access 2000. je ne sais pas si cela à une incidence ..

    Programer und dll j'en serai imcapable , Un hook , c'est pas la peine non plus.

    Donc voilà, si je peux faire marcher cet evenement pour palier à ce problème ce serait bien , sans que se soit trop lourd,mais je ne sais comment faire.

    je me susi renseigné sur l'evenement mais je ne sais pas trop l'utiliser

    si ce n'est vraiment pas possible , eh bien c'est dommage mais tant pis à regret.

    Si tu m'aider, merci mais dans totu les caes merci bp

  12. #12
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    je crois que l'événement existe en 2002 mais j'ai regardé il n'est pas très utile vu qu'on ne peut pas annuler le défilement des enregistrements avec...

    J'ai modifié la dll utilisée habituellement pour désactiver la molette de la souris, tu peux trouver la version modifiée ici :
    http://thierry.gasperment.chez-alice...MouseWheel.dll

    Il suffit de la mettre ou tu veux et de la référencer dans VBA avec outils --> références --> parcourir et tu sélectionnes la dll.
    Ensuite il faut bien sûr que la dll soit présente sur tous les pc qui utilisent la base.

    Dans le formulaire voilà le code de la FAQ modifié :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Compare Database
    Option Explicit
     
    ' Déclaration dans chaque formulaire après Option Explicit et Option Compare Database
    Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel
    ' Constantes pour le type de scrolling
    Private Const WM_VSCROLL = &H115
    ' Constantes pour les commandes
    Private Const SB_LINEUP = 0
    Private Const SB_LINEDOWN = 1
    ' Déclaration de l'API
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    'Procédure à rajouter dans chaque formulaire
    Private Sub clsMouseWheel_MouseWheel(Cancel As Integer, zDelta As Integer)
        If zDelta < 0 Then
           SendMessage Me.hwnd, WM_VSCROLL, SB_LINEDOWN, 0&
        Else
           SendMessage Me.hwnd, WM_VSCROLL, SB_LINEUP, 0&
        End If
        Cancel = True
    End Sub
    Private Sub Form_Load()
            'Code à rajouter dans l'événement chargement de chaque formulaire
        Set clsMouseWheel = New MouseWheel.CMouseWheel
        Set clsMouseWheel.Form = Me
        clsMouseWheel.SubClassHookForm
    End Sub
    Private Sub Form_Close()
        'Code à rajouter dans l'événement fermeture de chaque formulaire
        If Not (clsMouseWheel Is Nothing) Then
            clsMouseWheel.SubClassUnHookForm
            Set clsMouseWheel.Form = Nothing
           Set clsMouseWheel = Nothing
        End If
    End Sub
    N'oublie pas de définir les événements sur chargement et sur fermeture, dans les propriétés du formulaire choisir [Procédure événementiell] pour ces événements (écrire le code ne suffit pas, il faut que l'événement soit défini dans les propriétés de l'objet, c'est peut-être pour ça que tes événements ne se déclenchent pas).

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    c'est Absolument FANTASTIQUE !!!!

    Enorme !!! Je vous dis un grand merci !!

    Cela fonctionne parfaitement , je suavergarde bien la dll et le code !!!

    Merci beaucoup j'ai fait attention au procèdure évenementiel.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    j'ai besoin d'integrer cette fonction dans ma base de données (voir ce post) ttp://http://www.developpez.net/forums/vie...ebutant+access

    j'ai donc fait "outils --> références --> parcourir" et recherché la dll mais quand je la selectionne ca me dit "impossible d'ajouter une référence au fichier specifié"

    edit: la dll doit etre mauvaise car si j'utilise ce tutorial ci avec la dll qu'ils fournissent ca desactive la molette (mais je n'peut pas scroller :/ )
    http://www.techonthenet.com/access/forms/wheel.php

    edit2: j'viens d'ouvrir cette super dll "modifiée" avec notepad, ca me met des codes html...
    y a t'il une autre adresse pour telecharger la VRAI dll modifiée pour le scroll?

  15. #15
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Slt

    Le lien est mort

    En fait c'est moi qui l'avait faite cette dll mais je l'ai plus

    Par contre je dois encore avoir le source mais on a découvert un problème dans cette dll entre temps (la dll originale vient de microsoft...) :
    il n'est pas possible de l'utiliser sur plusieurs formulaires pour une utilisation plus complexe que bloquer la molette partout sans condition

    En gros si tu ouvres plusieurs formulaires l'événement MouseWheel est toujours déclenché dans le dernier formulaire : donc du déplaces la molette dans un formulaire et ça défiler un autre formulaire....

    C'est un peu pour ça que j'ai supprimé la dll de mon site.

    Voilà bref il faut recompiler une nouvelle dll avec la modif + la correction

    Mais ça fait déjà plusieurs messages du genre sur ce forum alors il faudra faire ça bien, genre dans la FAQ parce que je vais pas tout ré-expliquer à chaque fois

    Voilà donc bref il faut que je ré-écrive le source (enfin ça c'est pas très long je l'ai déjà en deux parties) et surtout que je trouve un compilateur VB6 pour compiler la dll.

    A moins que tu ne trouves une dll déjà modifiée, ce qui m'arrangerait...

  16. #16
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Bonjours a tous !!

    Désolé de faire remonter ce sujet mais j'ai une petite question, tout comme Nicko29 de faire défiler mon form sans faire bouger les enregistrement, le code de Arkham46 marche bien mais lorsque je veux faire en sorte qu'il prenne en compte mon scroll up et down apparement il caffouille....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
            'test
            SendMessage Me.hWnd, WM_VSCROLL, SB_LINEDOWN, 0&
            SendMessage Me.hWnd, WM_HSCROLL, SB_LINEUP, 0&
    End Sub
    ça dois venir de mon code, désolé si ça vous parrait nul comme problème...
    Je continue de chercher...si vous avez une idée je prend !

    Merci d'avance.

  17. #17
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    bjr,

    il faut utiliser une dll externe, l'événement MouseWheel du formulaire est limité et ne précise pas le sens de défilement de la roulette...

    cf ici :
    Gérez la roulette de la souris dans vos formulaires Access

  18. #18
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    C'est bien ce que je pensais ! tan pis, la boite ou je suis m'interdit de jouer avec les dll....

    Pas de dll, pas de roulette, tan pis.

    Pour la desactiver il faut aussi passé par cette dll je supose (cf FAQ)? Or je ne l'ai pas sur ma machine et je ne peu pas l'installer !

    Y a t'il une autre solution ?

    Merci pour vos réponse.

    Thib

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. import de plusieurs fichiers XML dans Access 2003
    Par frdek dans le forum Access
    Réponses: 7
    Dernier message: 09/08/2008, 19h39
  2. erreur d'exécution '48' dans access 2003
    Par SANGLIER dans le forum Access
    Réponses: 1
    Dernier message: 25/01/2007, 19h01
  3. Controle de dates dans ACCESS 2003
    Par Invité dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  4. Problème de requête dans Access 2003
    Par charleshbo dans le forum Access
    Réponses: 2
    Dernier message: 14/02/2006, 19h47
  5. Problème assistant dans Access 2003
    Par French dans le forum Access
    Réponses: 1
    Dernier message: 09/02/2006, 22h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo