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

Excel Discussion :

Modifier le nombre de ligne du scrolling de la souris (via l'API Windows) [XL-2007]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut Modifier le nombre de ligne du scrolling de la souris (via l'API Windows)
    Bonjour à toutes et à tous !

    J'ai cherché à travers tout le forum EXCEL une solution à mon problème, mais sans succès !

    Ce que je souhaite :
    Le nombre de ligne de défilement à partir de la molette de la souris est définit dans les paramètres du driver de la souris.
    J'aimerais pourvoir modifier le nombre de ligne de défilement directement depuis un classeur Excel afin de ne pas avoir à passer par le panneau de configuration à chaque fois que j'ouvre un classeur Ecxel...
    Par exemple, par défaut si le nombre de ligne est fixé à 5, j'ai des feuilles excel avec des hauteurs de ligne très grande et du coup, lors du défilement à la molette, je ne vois pas toutes les lignes.

    J'ai bien trouvé l'application de Ti (qui est pointue et même compliqué) qui permet de gérer la souris pour les userform, mais cette appli ne convient pas à mon besoin.
    J'ai également trouver une manière "simpliste" qui consiste à modifier la valeur de la clés "WheelScrollLines" se trouvant dans la base de registre (HKEY_CURRENT_USER\Control Panel\Desktop\), mais le scrolling étant la plupart du temps géré par le driver de la souris, le fait de changer ce paramètre dans la BDR n'y change rien.....
    J'ai également trouvé des choses très interessante et qui semble correspondre à mon besoin, mais celles-ci se trouvent dans la section VB et ne sont pas applicables à VBA sous Excel.....

    Alors voilà, si vous auriez une solution à mon problème...... Ou si vous pourriez simplement m'aiguiller, je vous en remercie par avance !!!

    Amicalement,
    JB

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Points : 118
    Points
    118
    Par défaut
    Salut, je pense que t'es un peu tordu pour chercher à contrôler le défilement de la souris autrement que par le panneau de configuration, enfin je suis un peu comme ça donc je te pardonne.

    Excel permet de générer du code en fonction des actions que tu peut faire lors de l'enregistrement d'une macro.
    En lisant ton problème j'ai fait ceci :
    - Ouverture d'une nouveau classeur
    - lancement de l'enregistrement d'une macro (le nom importe peu)
    - je fais défiler 1 fois vers le bas avec la mollette de ma souris
    - je stoppe l'enregistrement de la macro

    Enfin je lance l'éditeur VBA et regarde dans le module "Module1" spécialement créé pour la macro (qui devrait s'appeler Macro1).

    Et je vois la ligne de code générée pour mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SmallScroll Down:=5
    Là tu peut voir la valeur 5 qui correspond au nombre de lignes déplacé via le scroll de la souris. Peut être un bon début pour arriver à tes fins...

    Quoique..........
    Si tout semble bien marcher c'est que vous avez oublié quelque chose !

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Merci Golork, je n'y avais pas pensé...
    Mais bon, cela ne résoud pas le problème.... Il faut tout de même intercepter le scrolling de la souris pour imposer le nombre de ligne que tu veux faire défiler via le code que tu donne....

    J'ai chercher toute la journée sur la toile, a priori ce serait plutot du coté des API windows qu'il faut regarder...
    Dans l'API USER32 il y a ce qu'il faut pour récupérer et à plus forte raison, configurer le nombre de ligne de défilement de la souris....

    Maintenant, je ne sais pas comment mettre en oeuvre ce code en VBA pour EXCEL...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Obtenir et modifier le nombre de lignes de défilement de la roulette 
     
    SPI_GETWHEELSCROLLLINES est un entier = 104 
    SPI_SETWHEELSCROLLLINES est un entier = 105 
    nbligne est un entier 
    appeldll32("user32","SystemParametersInfoA",SPI_GETWHEELSCROLLLINES,0,&nbligne,0) 
    info("Le nombre de lignes pour la roulette est fixé à "+nbligne) 
     
    // pour modifier le nombre de lignes 
    nbligne=20 
    appeldll32("user32","SystemParametersInfoA",SPI_SETWHEELSCROLLLINES,nbligne,0,0)

    Si quelqu'un pourrait m'aider...... Merci par avance !!!

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut Début de solutiion !!! :)
    J'avance pas à pas dans mes recherches !!

    La (ou plutot ma...) traduction de ce code en VBA :
    appeldll32("user32","SystemParametersInfoA",SPI_GETWHEELSCROLLLINES,0,&nbligne,0)
    appeldll32("user32","SystemParametersInfoA",SPI_SETWHEELSCROLLLINES,nbligne,0,0)
    ....déclaration en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Declare Function SystemParametersInfoA Lib "user32.dll" ( _
                                                 ByVal uAction As Long, _
                                                 ByVal uParam As Long, _
                                                 lpvParam As Any, _
                                                 ByVal fuWinIni As Long) As Long
    Const SPI_GETWHEELSCROLLLINES = 104
    Const SPI_SETWHEELSCROLLLINES = 105
    Et l'appel est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
       Dim nbLigne As Long
       ' Lecture de la valeur....
       SystemParametersInfoA SPI_GETWHEELSCROLLLINES, 0, nbLigne, 0
       nbLigne = CLng(InputBox("Nb ligne ?", , nbLigne))
       ' Ecriture d'une nouvelle valeur...
       SystemParametersInfoA SPI_SETWHEELSCROLLLINES, nbLigne, ByVal 0&, 0
    End Sub
    Ce code fonctionne très bien, le nombre de ligne de défilement est bien mis à jour. Pour m'en assurer, après avoir modifier le paramètre, je test le scrolling de la souris dans une page web ouverte et c'est OK !!!!

    Par contre, dans la feuille excel qui est ouverte, c'est toujours le paramètre initial qui est pris en compte...
    Si je ferme excel et que je l'ouvre à nouveau, cette fois ci le paramètre saisie fonctionne !?

    En résumé, je peux modifier le nombre de ligne du scrolling mais je suis obligé de fermer puis de rouvrir excel.... pas très cool !!!

    Est ce que quelqu'un aurait une idée pour éviter ce phénomène ??
    Peut on "raffraichir" la session excel courante ???

    ....merci à vous de m'aider !!!!!

  5. #5
    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,

    vu la doc : SystemParametersInfo Function (MSDN)

    il faudrait voir avec le dernier paramètre pour notifier le changement à Excel (cf SPIF_SENDCHANGE)

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Bsr Arkham46, merci pour l'interet que tu porte à mon sujet !!

    J'ai essayé le script avec les 3 constantes listées, mais le résultat est toujours le même... Peut être est ce les valeurs de mes constantes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const SPIF_SENDWININICHANGE = &H2
    Const SPIF_UPDATEINIFILE = &H1
    Const SPIF_SENDCHANGE = 2
    Peux tu me dire si elles sont correct ..?

  7. #7
    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
    il faut conjuguer les deux constantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Arkham46, tu es un Dieu !!!
    Je te rajoute une septième étoile !!!!!

    C'est impec !!!


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

Discussions similaires

  1. TListView - Modifier le nombre de lignes du Libellé
    Par ARDILLER dans le forum Composants VCL
    Réponses: 0
    Dernier message: 09/08/2014, 15h32
  2. Réponses: 2
    Dernier message: 13/10/2008, 16h04
  3. Réponses: 12
    Dernier message: 11/12/2006, 13h47
  4. zone de texte a nombre de ligne modifiable
    Par Milenium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/08/2006, 08h39
  5. [HTML] Propriétés pour modifier le nombre de ligne d'un input text ?
    Par Thauglor dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/05/2006, 11h05

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