Questions sur contrôle HScrollBar

Résolu
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 - 21 sept. 2020 à 17:16
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 - 23 sept. 2020 à 09:11
Bonsoir à tous !

J'ai dans une forme un contrôle Hscrollbar horizontal nommé barre. J'aimerai déterminer quelle partie de ce contrôle est cliquée pour un faire un défilement dans une table. Je m'explique :


En 1, MovePrevious
En 2, MovePrevious n fois la valeur de barre.value
En 3, MoveNext n fois la valeur de barre.value
En 4, MoveNext

Pour résumer, y a-t-il un moyen de savoir si je clique en 1, 2, 3 ou 4 pour savoir quelle action je dois faire ?

Je sèche depuis qq jours et une aide serait la bienvenue !

Merci

Notpa

3 réponses

JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
Modifié le 21 sept. 2020 à 19:07
Salut Notpa,

Non, impossible de faire simple avec les fonctions de Class données... comme toujours.

Mais il est très simple de le savoir:

Nouvelle Form, un HScroll1 horizontal.



Public Last_Sc_Val

Private Sub Form_Load()

HScroll1.SmallChange=1  ' Flèche gauche-droite (1-4) SmallChange<>LargeChange
HScroll1.LargeChange=2  ' Zone Flèche-curseur (2-3) Sinon ça marche pas.
HScroll1.Min=0  'Limite basse
HScroll1.Max=10  'Limite haute

Last_Sc_Val = HScroll1.Value
End Sub

Private Sub HScroll1_Change()
Last_Sc_Val = -(Last_Sc_Val - HScroll1.Value)
Me.Caption = Last_Sc_Val

Select Case Last_Sc_Val

        Case 0
            Me.Caption = "Scroll: curseur"
        Case -HScroll1.SmallChange
            Me.Caption = "Scroll: Min gauche"
        Case HScroll1.SmallChange
            Me.Caption = "Scroll: Min droite"
        Case -HScroll1.LargeChange
            Me.Caption = "Scroll: Max gauche"
        Case HScroll1.LargeChange
            Me.Caption = "Scroll: Max droite"
        Case Is < HScroll1.LargeChange
            Me.Caption = "Scroll: Max gauche"
        Case Else
            Me.Caption = "Scroll: Max droite"
End Select

Last_Sc_Val = HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
Last_Sc_Val = HScroll1.Value
End Sub


Par contre, si Value est inférieur a LargeChange et supérieur à SmallChange, la réponse est ambigüe car les deux peuvent donner la bonne réponse.

Sinon, il faut faire du sub-classing... et c'est moins simple.
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
21 sept. 2020 à 19:19
Merci JeuDuTaquin !

Je vais étudier ça, mais plus tard. Je dois m'absenter qq jours.

A+

Notpa
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
23 sept. 2020 à 09:11
Bonjour JeuDutaquin !

Génial ! Impec ! Ça marche nickel. Pour mieux voir ce qui se passe, j'ai ajouté dans ton code une grille qui montre les choix et les valeurs. Ce qui donne :


Si tu veux, je peux copier ce code pour infos.

Merci encore. A moi maintenant de me ballader dans la base Access en fonction des zones cliquées.

Je passe en Résolu.

Cordialement

Notpa
0
Rejoignez-nous