0/5 (5 avis)
Vue 4 918 fois - Téléchargée 315 fois
'------------------------- ' Dans une feuille excel : ' Private Sub ComboBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If hWndDropListCombo = 0 Then hWndDropListCombo = GetHandleDropListFromCombo ' ajoutez ici votre code pour utiliser cet handle ' ... End If End Sub Private Sub ComboBox1_LostFocus() hWndDropListCombo = 0 End Sub '----------------- ' Dans un module : ' Public hWndDropListCombo As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Public Function GetHandleDropListFromCombo() As Long Dim hWndExcel As Long Dim hWndPopup As Long Dim hWndList As Long Const VBA_POPUP_CLASSNAME = "F3 MdcPopup 60000000" Const VBA_LIST_CLASSNAME = "F3 Server 60000000" ' retourne l'handle d'excel hWndExcel = FindWindow("XLMAIN", vbNullString) 'trouve celui du popup hWndPopup = FindWindowEx(hWndExcel, 0&, VBA_POPUP_CLASSNAME, vbNullString) If hWndPopup = 0 Then hWndPopup = FindWindow(VBA_POPUP_CLASSNAME, vbNullString) End If 'trouve celui de la liste dans le popup hWndList = FindWindowEx(hWndPopup, 0&, VBA_LIST_CLASSNAME, vbNullString) GetHandleDropListFromCombo = hWndList End Function
14 juin 2012 à 17:15
Quand je clique dans la combobox, j'obtiens toujours le message:
"L'handle de la liste déroulante du combobox a été capturé = 0"
Je ne sais pas pourquoi...
Cdt
14 juin 2012 à 09:21
à mimizanzan : je serait curieux de savoir la raison pour laquelle le code ne fonctionne pas chez toi. Reviens nous le dire lorsque tu aura trouvé.
4 juin 2012 à 17:00
Il me semble que le handle devrait toujours être le même durant une même session, non ?
4 juin 2012 à 15:10
Ton code serait intéressant, mais il donne toujours comme handle la valeur 0...(avec Excel 2003, 2007, et 2010).
Donc inutilisable.
Cdt
29 mai 2012 à 19:36
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.