Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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
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
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
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
Bonjour à Tous
merci pour ces codes, cependant, Job, pourquoi utilises tu CopyPicture et shapes ? ma liste ne contient que du texte ? peux tu faire sans ? basic ?
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
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
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD