XL 2016 Quelle API pour savoir si une ListBox (UserForm ou ActiveX) a sa ScrollBar Verticale présente ?

Dudu2

XLDnaute Barbatruc
Bonjour les XLDNautes,

Si on peut, sans API, savoir si une ComboBox a son ascenseur affiché grâce à la différence (ComboBox.ListCount - ComboBox.ListRows) ce n'est pas possible avec les ListBoxes.
Certes on connaît son ListBox.TopIndex mais il n'existe pas de ListBox.BottomIndex.
Un approximation est possible avec la ListBox.Font.Size mais ça reste imprécis.

Reste l'API qui pourrait indiquer la présence d'une Vertical ScrollBar mais mes essais sont restés infructueux.
Merci pour toute suggestion.
 
Solution
pour ce qui est de cette discussion j'ai revue la chose pour les ListBox dans userform et feuille

Dudu2

XLDnaute Barbatruc
Tu l'as dans le fichier.
1667983787662.png


Par contre il faut revoir toute la séquence de la CallBack function.
 

patricktoulon

XLDnaute Barbatruc
ben en fait ca m'étonne que ca fonctionne chez toi la enum
par ce que par exemple ici
VB:
  EnumChildWindows WH, AddressOf EnumChildWindowsFunc, 0
    GetControlHandleByEnumChildWindows = ControlHandle
le return te donnera toujours 0 car il est exécuté sans attendre la enumproc car elle est en addressof
 

Dudu2

XLDnaute Barbatruc
Je me suis aussi posé la question mais les traces disent le contraire:
VB:
Debug.Print "Avant EnumChildWindows"
    EnumChildWindows WH, AddressOf EnumChildWindowsFunc, 0
Debug.Print "Après EnumChildWindows"
    GetControlHandleByEnumChildWindows = ControlHandle

VB:
Private Function EnumChildWindowsFunc(ByVal ChildWH As LongPtr, Param As Long) As Boolean
    Dim ChildWR As RECT
    Dim ClassName As String
   
    EnumChildWindowsFunc = True
   
ClassName = GetClassNameStr(ChildWH)
Debug.Print ClassName & " " & GetWindowName(ChildWH)

Avant EnumChildWindows
EXCEL2
MsoCommandBar Barre d'état
MsoWorkPane Barre d'état
NUIPane
NetUIHWND
EXCEL2
MsoCommandBar Ribbon
MsoWorkPane Ribbon
NUIPane
NetUIHWND
NetUICtrlNotifySink
NetUICtrlNotifySink
RICHEDIT60W Calibri
NetUICtrlNotifySink
RICHEDIT60W 11
NetUICtrlNotifySink
RICHEDIT60W Standard
EXCEL;
ComboBox
Edit
EXCEL<
NUIScrollbar Vertical
NetUIHWND
EXCELG
EXCELG
EXCELG
EXCELG
EXCEL2
EXCEL2
XLDESK
EXCEL7 GetControlHandleMethods.xlsm
NUIScrollbar Vertical
NetUIHWND
NUIScrollbar Horizontal
NetUIHWND
XLCTL
XLCTL
XLCTL
F3 Server e0780000
F3 Server e0780000
EXCEL6
MsoWorkPane
MsoWorkPane
Après EnumChildWindows
 

Dudu2

XLDnaute Barbatruc
Ça permettrait de trouver le Handle des Controls, ce qu'on cherche à faire depuis des lustres.
Maintenant, pour revenir à la question initiale de la présence d'une Vertical ScrollBar, reste à savoir si, avec ce Handle, on peut obtenir l'information de sa présence ou de son absence.
 

Statistiques des forums

Discussions
312 397
Messages
2 088 058
Membres
103 710
dernier inscrit
kty