VB7 roulette souris ne fonctionne pas dans listebox et userForm

andrekn13

XLDnaute Occasionnel
Bonjour
Avec Excel 2010 et VBa7 , j'ai parcourru pleins de post traitant de ce sujet et à mon grand désarrois je n'en ai vu aucun qui parle sur vba7, mais sur vb6. j' ai 3 souris différents avec windows 7 64 bit et dans les compléments aucun signe option souris. toutes les méthodes que j' ai essayées n'ont pas abouti. car il me semble bien que c' est vb qui ne gère pas le défilement de la souris et les bidouilles modules et codes ou autres n' ont pas été compatibles.
y a t il une solution simple style AddIn ?
 

andrekn13

XLDnaute Occasionnel
Re : VB7 roulette souris ne fonctionne pas dans listebox et userForm

Ouahhh ! j'ai tellement cherché que là franchement jtire mon chapo ! c' est là que l' on apprécis la réponse !
mDans mon userform, ma liste contient 13 lignes et bien à chaque clic, je passe au 13 lignes suivantes.
pour ceux qui le veulent de suite :
a rajouter à la suite des codes de l' userform en question
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim v As Byte
v = 13 'pas de défilement
With ListBox1
.TopIndex = IIf(b = False, .TopIndex + v, IIf((.TopIndex - v) >= 0, .TopIndex - v, 0))
If (.TopIndex + v) > .ListCount Then
b = True
ElseIf (.TopIndex + v) <= v Then b = False
End If
End With
End Sub
et marche nickel !Merci encore.
 

systmd

XLDnaute Occasionnel
Re : VB7 roulette souris ne fonctionne pas dans listebox et userForm

Bonjour

Voici un petit exemple pour la roulette .

Ne pas oublier la propriété TAG de la ListBox et le Unhook avant Fermeture de l'USF,
sinon plantage assuré.
 
Dernière édition:

systmd

XLDnaute Occasionnel
Re : VB7 roulette souris ne fonctionne pas dans listebox et userForm

- La propriété Tag permet de stocker des infos sur l'objet (Cf. Liste de propriétés de ta ListBox)

- UnHook est une fonction (Cf. Module1)

Comprend par Hook : une action supplémentaire et donc UnHook : Arrêt de cette fonction
Ici l'action supplémentaire c'est l'événement mousewheel (La roulette de la souris).

Pour ton exemple perso:

- Dans ta USF met "List1" par exemple comme Tag de ListBox1

- copie le module 1 sur le tien et renomme le Mod_MouseWheel par exemple
- dans ce module repère "Private Sub MouseWheel" vérifie qu'il y est le même nom "Case "List1" et change le nom de l'USF (ici FrmMenu) With FrmMenu '<--- Mettre nom de L'USF

- Dans "Private Sub UserForm_Initialize()" de ton USF tu met

hwnd = hwndFenetreForm(Me.Caption)
If hwnd <> 0 Then Hook hwnd


et tu recopie intégralement les 3 sub:
Public Sub Controle_ActualiseWheel
Private Sub ListBox1_MouseMove
Private Sub UserForm_QueryClose


enfin déclare " Dim hwnd As Long" après "Option Explicit"

J'espère t'avoir éclairé un peu plus, sinon post ton exemple pour que je te le modifie.

[édité]
Suite remarque de Yaloo sur l'autre Post, je suis sous Seven et Office 2007. mais aucun problème normalement avec 2010 vu
que l'on joue avec l'API Windows.
 
Dernière édition:

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 841
dernier inscrit
ferid87