Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 2015
-
2 août 2010 à 15:59
Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 2015
-
2 août 2010 à 16:04
Bonjour,
Je voudrais savoir pourquoi la ligne sendmessage du code suivant ne fonctionne pas. Ce code est extrait d'une macro vba pour excel. Le code suivant ne retourne pas d'erreur, c'est juste que sendmessage ne fonctionne pas. Son but est normalement de faire défiler le scroll bar d'une listebox grâce à l'api sendmessage. Je sais utiliser sendmessage et j'ai déjà vérifié que la macro fonctionnait avec d'autres messages (WM_ ...). Je ne veux pas réussir à tout pris à scroller une listebox mais plutot savoir pourquoi le sendmessage suivant ne fonctionne pas. Je connais d'autres méthodes pour scroller une listbox dans vba. Cependant, je veux utiliser cette méthode via sendmessage (je répète pour éviter les ambigüités). J'ai préalablement bien sélectionné un item au milieu d'une listebox contenant beaucoup d'éléments. De plus, sous vb6, j'ai vérifié que ce code fonctionne bien, en changeant hListBox par Form1.ListBox1.hWnd évidemment. J'ai besoin de vos lanternes pour éclairer ce point qui ne me semblait pas obscure à l'origine. Merci d'avance.
' Dans un module
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetFocus Lib "user32" () As Long
' Procédure à appeler pour scroller ma listebox d'un cran
Private Sub ScrollerMaListeBox()
Dim hListBox As Long
Const SB_LINEDOWN As Long = 1
Const WM_VSCROLL As Long = &H115
' SetFocus sur notre listbox pour récupèrer son handle
UserForm1.ListBox1.SetFocus
' Récupère son handle
hListBox = GetFocus
' Envois le message pour faire scroller d'un cran
SendMessage hListBox, WM_VSCROLL, SB_LINEDOWN, 0&
DoEvents
End Sub