[VBA] scroller une listebox par API

[Résolu]
Signaler
Messages postés
308
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,
Comment scroller une listebox à l'aide d'API en déplacement le curseur de la scroll bar et pas l'index de la listebox ?

Scroller : faire défiler le curseur de la barre de défilement.

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Tiens, voilà de quoi assouvir ta curiosité avec <ce lien>
Le dernier problème sera de gérer les handles sous VBA ...
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
C'est dommage parce que le EnsureVisible sur un Item est justement très pratique pour cela.

Oui, par les APIs ont peut tout faire.
Oups, j'étais en train d'écrire et je m'aperçois que tu parles d'une ListBox et pas ListView.
Si tu as la possibilité (*) d'utiliser une ListView à la place, c'est beaucoup plus souple.
(*) Fichier MSCOMCTL.ocx présent sur toutes les machines depuis XP

Ce doit être une histoire de SendMessage vers la ListView avec une constante commençant par LVM_ (ou EM_) qui doit contenir le mot Scroll : Une petite recherche rapide dans ApiViewer pour trouver une constante comme ça et, ... Oui : LVM_SCROLL me parait tout indiqué.
Un petit tour de Google ou Bing avec "vb6 sendmessage lvm_scroll" et on doit bien trouver des bouts de code à étudier.

Par contre pour la ListBox, à priori les constantes commencent par LB_ mais aucun ne me met la puce à l'oreille.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
308
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
Merci. Oui en effet c'est plus simple avec une listview. Mais dans la macro excel dont je dispose, je n'ai pas le droit de tout modifier. Ca fait un moment je cherche à utiliser les API pour déplacer le curseur de la scrollbar d'une listebox. Mes utilisateurs ne veulent pas d'un scroll par la listindex mais bien par le curseur du scrollbar. J'ai fait plusieurs essais via sendmessage mais sans succès. Voir mon précédent post :
http://www.vbfrance.com/forum/sujet-VBA-SENDMESSAGE-LISTBOX_1458747.aspx
Si vous avez idée pour résourdre mon problème précédent, ça réglerait mes deux posts.