XL 2016 SpinButton et Plage Nommée

AlphaOne

XLDnaute Nouveau
Bjr le forum,
Étant novice en VBA, je cherche a créer un code qui me permettrai dans une cellule B3 de faire défiler une plage nommé (disons "Liste") a l'aide d'un SpinButton ?
Possible ?
Bye
 

job75

XLDnaute Barbatruc
Bonjour AlphaOne, danielco,

Le code du SpinButton :
VB:
Private Sub SpinButton1_Change()
Dim s As Shape
[B3].Select
For Each s In Me.Shapes
    If s.TopLeftCell.Address = ActiveCell.Address Then s.Delete
Next
If SpinButton1 = 0 Then Exit Sub
[Liste].Cells(SpinButton1).CopyPicture
Paste
ActiveCell.Activate
End Sub
A+
 

Pièces jointes

  • Défilement.xlsm
    20.4 KB · Affichages: 1

job75

XLDnaute Barbatruc
Pour faire fonctionner la toupie dans l'autre sens utiliser :
VB:
Private Sub SpinButton1_Change()
Dim s As Shape
[B3].Select
For Each s In Me.Shapes
    If s.TopLeftCell.Address = ActiveCell.Address Then s.Delete
Next
SpinButton1.Max = [Liste].Count
If SpinButton1 = SpinButton1.Max Then Exit Sub
[Liste].Cells(SpinButton1.Max - SpinButton1).CopyPicture
Paste
ActiveCell.Activate
End Sub
 

Pièces jointes

  • Défilement.xlsm
    20.3 KB · Affichages: 0

job75

XLDnaute Barbatruc
Avec mes fichiers précédents on remarquera que si l'on exécute la commande Coller par Ctrl+V la dernière image copiée se colle sur la cellule active.

Pour éviter ce collage il faut vider le presse-papiers :
VB:
Private Sub SpinButton1_Change()
Dim s As Shape
[B3].Select
For Each s In Me.Shapes
    If s.TopLeftCell.Address = ActiveCell.Address Then s.Delete
Next
SpinButton1.Max = [Liste].Count
If SpinButton1 = SpinButton1.Max Then Exit Sub
[Liste].Cells(SpinButton1.Max - SpinButton1).CopyPicture
Paste
ActiveCell.Activate
[A1].Copy [A1] 'vide le presse-papiers
End Sub
 

Pièces jointes

  • Défilement.xlsm
    20.6 KB · Affichages: 2

job75

XLDnaute Barbatruc
Hello Goose,
Merci mais peut-on faire sans les formats avec du VBA ?
Comme l'a dit danielco dans ce cas pas besoin de VBA mais bon :
VB:
Private Sub SpinButton1_Change()
[B3].Select
SpinButton1.Max = [Liste].Count
ActiveCell = ""
If SpinButton1 < SpinButton1.Max Then ActiveCell = [Liste].Cells(SpinButton1.Max - SpinButton1)
End Sub
A+
 

Pièces jointes

  • Défilement.xlsm
    20.1 KB · Affichages: 2

job75

XLDnaute Barbatruc
J'avais fait l'inversion entre le post #3 et le post #4 mais puisque vous n'en voulez pas :
VB:
Private Sub SpinButton1_Change()
[B3].Select
SpinButton1.Max = [Liste].Count
If SpinButton1 Then ActiveCell = [Liste].Cells(SpinButton1) Else ActiveCell = ""
End Sub
 

Pièces jointes

  • Défilement.xlsm
    20.1 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
313 090
Messages
2 095 168
Membres
106 196
dernier inscrit
jack guilliod