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 Subet 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 SubJe vous remercie par avance si vous aviez une solution :)
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 SubBonjour à 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 SubA+
@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é
@AlgoPlus : Fonctionne parfaitement ! Parfait ! Merci beaucoup !!
Cordialement