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

SpinButton sans les lignes vides.

  • Initiateur de la discussion Initiateur de la discussion Hulk
  • Date de début Date de début

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 !

Hulk

XLDnaute Barbatruc
Hello tout le monde,

J'ai un souci avec un SpinButton, je ne parviens pas à récupérer les valeurs de la colonne A, sans les lignes vides.

Je souhaite avoir le même résultat que dans la ComboBox1.

Si quelqu'un pouvait me venir en aide... merci infiniment.

Cdt, Hulk.
 

Pièces jointes

Dernière édition:
Re : SpinButton sans les lignes vides.

Bonjour,
Essaies comme ceci
Code:
Private Sub SpinButton1_Change()
TextBox1 = Range("A" & SpinButton1 * 5 + 1)
End Sub

Private Sub UserForm_Initialize()
SpinButton1.Min = 0
SpinButton1.Max = Application.CountA(Range("A1:A" & Range("A65536").End(xlUp).Row))
SpinButton1 = 0
End Sub
A+
kjin
 
Dernière édition:
Re : SpinButton sans les lignes vides.

Bonjour
Salut kjin

Ci dessous une macro pour afficher uniquement les zones non vides
Code:
A rajouter dans Private Sub UserForm_Initialize
SpinButton1.Max = Range("A65536").End(xlUp).Row

Private Sub SpinButton1_SpinUp()
Dim i As Integer

    Do
     Me.TextBox1 = Sheets("Feuil1").Range("A" & SpinButton1.Value)
     If Me.TextBox1 <> "" Then Exit Do
     
     If SpinButton1.Value = SpinButton1.Max Then Exit Do
     
     If SpinButton1.Value < SpinButton1.Max Then SpinButton1.Value = SpinButton1.Value + 1
     
     
    Loop

End Sub


A tester

JP
 
Dernière édition:
Re : SpinButton sans les lignes vides.

Hello,

Merci pour vos réponses compagnons 😀

Avec ton code Kjin, j'ai juste remplacé le Max à 9 et ça joue impec alors qu'avant il ne s'arrêtait pas au dernier... pourquoi... beuh 😕 😀 EDIT : Au fait oui je crois savoir pourquoi 😀

Jp, tu ne m'en voudras pas j'espère, mais ai finalement opté pour le code à Kjin, il me parle plus.

Mais je tiens tout de même à comprendre et garder le tien Jp 😀
Alors j'ai essayé ceci
Code:
Private Sub UserForm_Initialize()
Dim i As Integer
SpinButton1.Max = Range("A65536").End(xlUp).Row
'SpinButton1.Min = 1
End Sub
Code:
Private Sub SpinButton1_SpinUp()
Dim i As Integer
    Do
     Me.TextBox1 = Sheets("Feuil1").Range("A" & SpinButton1.Value)
     If Me.TextBox1 <> "" Then Exit Do
     If SpinButton1.Value = SpinButton1.Max Then Exit Do     
     If SpinButton1.Value < SpinButton1.Max Then SpinButton1.Value = SpinButton1.Value + 1         
    Loop
End Sub

Private Sub SpinButton1_SpinDown()
Dim i As Integer
    Do
     Me.TextBox1 = Sheets("Feuil1").Range("A" & SpinButton1.Value)
     If Me.TextBox1 <> "" Then Exit Do     
     If SpinButton1.Value = SpinButton1.Min Then Exit Do     
     If SpinButton1.Value > SpinButton1.Min Then SpinButton1.Value = SpinButton1.Value - 1      
    Loop
End Sub
Juste que, il démarre avec le deuxième nom, je n'ai pas trouvé la combine pour qu'il démarre avec le premier nom.

De plus, un peu bizarre, car trois fois ça m'a planté Excel.

En tous les cas merci à vous.

Cdt, Hulk.
 
Dernière édition:
Re : SpinButton sans les lignes vides.

Bonjour

Un code avec une boucle Do peut poser des problèmes si on ne trouve pas les conditions de sortie de la boucle, ce qui donne une Dead Loock ou boucle mortelle.

Il faut ajouter à l'égalité le test > ou < en fonction de la condition.
If SpinButton1.Value >= SpinButton1.Max Then Exit Do

J'ai utilisé cette technique pour que la procédure fonctionne même si on insère une ligne.
Il faudrait pour la valeur de départ mettre 0 car partant de 1 la première action va donner 2.

JP
 
Re : SpinButton sans les lignes vides.

Re, bonjour JP
Avec ton code Kjin, j'ai juste remplacé le Max à 9 et ça joue impec alors qu'avant il ne s'arrêtait pas au dernier... pourquoi... beuh 😕 😀 EDIT : Au fait oui je crois savoir pourquoi 😀
Bin oui, j'ai mis le Min à 0 en oubliant de modifier la ligne
Code:
SpinButton1.Max = Application.CountA(Range("A1:A" & Range("A65536").End(xlUp).Row)) [COLOR="Red"]- 1[/COLOR]
🙄 😱
A+
kjin
 
- 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

Discussions similaires

Réponses
6
Affichages
199
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…