Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…