Toupie + Liste déroulante

Bonjour,

Je fais suite à ce sujet qui semble être clôturé, sinon j'aurais poser ma question dessus

J'ai récupérer ce code

Private Sub SpinButton1_Change()
    Dim v%
    v = SpinButton1.Value
    If v = 0 Then
        v = 3
    ElseIf v = 4 Then
        v = 1
    End If
    SpinButton1.Value = v
    Range("C4").Value = [A2:A4].Cells(v, 1).Value
End Sub

et j'ai voulu l'adapter à mon tableur.

Le problème avec ce code c'est qu'il ne filtre pas tous les composants d'une liste, actuellement il n'y a que 3 éléments qui défilent.

Ne comprenant pas le VBA... je bloque au niveau des If et Elseif etc.

Ce qui m’intéresserait ce serait que la toupie fasse défiler le nombre de valeur qu'il y a dans ma liste qui s’appelle [listeSite], le seul parametre que j'ai réussi à changer

mon code actuel qui ne filtre pas tous les éléments de ma liste :

Private Sub SpinButton1_Change()
    Dim v%
    v = SpinButton1.Value
    If v = 0 Then
        v = 3
    ElseIf v = 4 Then
        v = 1
    End If
    SpinButton1.Value = v
    Range("F1").Value = [listeSite].Cells(v, 1).Value
End Sub

Je vous remercie par avance si vous aviez une solution :)

Oups

Le fichier est là :

Hello,

Tu as les évènements SpinUp, SpinDown autant en profiter

Private Sub SpinButton1_SpinDown()

Dim bytValSpin As Byte, bytCountList As Byte
Dim rngListe_Site As Range
Dim strListeName As String
Dim Valeur As Variant

bytValSpin = SpinButton1.Value
Set rngListe_Site = Sheets("listeSite").Range("listeSite")
bytCountList = rngListe_Site.Count

strListeName = [F1]
If strListeName = "" Or strListeName = rngListe_Site.Cells(bytCountList) Then
    strListeName = rngListe_Site.Cells(1)
Else
    For Each Valeur In rngListe_Site
        If Valeur = strListeName Then strListeName = rngListe_Site.Cells(Valeur.Row): Exit For
    Next
End If

[F1] = strListeName

End Sub

Private Sub SpinButton1_SpinUp()

Dim bytValSpin As Byte, bytCountList As Byte
Dim rngListe_Site As Range
Dim strListeName As String
Dim Valeur As Variant

bytValSpin = SpinButton1.Value
Set rngListe_Site = Sheets("listeSite").Range("listeSite")
bytCountList = rngListe_Site.Count

strListeName = [F1]
If strListeName = "" Then
    strListeName = rngListe_Site.Cells(1)
ElseIf strListeName = rngListe_Site.Cells(1) Then
    strListeName = rngListe_Site.Cells(bytCountList)
Else
    For Each Valeur In rngListe_Site
        If Valeur = strListeName Then strListeName = rngListe_Site.Cells(Valeur.Row - 2): Exit For
    Next
End If

[F1] = strListeName

End Sub

Bonjour à tous,

Une autre solution :

Private Sub SpinButton1_Change()
    Dim v%
    SpinButton1.Max = Worksheets("listeSite").ListObjects("Tableau1").ListRows.Count + 1
    SpinButton1.Min = 0
    v = SpinButton1.Value
    If v = SpinButton1.Min Then v = SpinButton1.Max - 1
    If v = SpinButton1.Max Then v = SpinButton1.Min + 1
    Range("F1").Value = [listeSite].Cells(v, 1).Value
    SpinButton1.Value = v
End Sub

A+

@Rag02700 Merci ! Je ne connais pas la différence entre SpinUp et spinDown. J'ai appris aujourd'hui l'existence des toupies

J'ai essayé votre code sur le fichier joint : fonctionne niquel!

J'ai voulu l'adapter sur un autre tableur : fonctionne à moitié le défilement fonctionne mais il saute 3 lignes, et arrivé à la fin du tableau ça arrête le défilement. J'ai pourtant cherché, je ne comprend pas.

@AlgoPlus : Fonctionne parfaitement ! Parfait ! Merci beaucoup !!

Cordialement

Rechercher des sujets similaires à "toupie liste deroulante"