Afficher/masquer ligne avec SpinButton

Bonjour,

J'ai un petit souci avec un SpinButton,

Je l'ai configurer pour afficher et masquer des lignes, tout semble marcher (même si je suis sur qu'il y a mieux comme technique)

Mais lorsque ma cellule lié (K15), doit passer du chiffre 2 au chiffre 1, rien ne se passe, sauf que mes lignes de code indiquent qu'il doit masquer des lignes.

Je vous joint mon fichier, cela se passe sur la feuille "AB".

Merci

PS : la ligne "0" ne doit au final pas exister. Elle n'est la que pour les testes. (Ca va finir ainsi)

If SpinButton1.Value < 1 Then
SpinButton1.Value = 0
End If

Sauf si vous connaissez mieux

PS² : J'ai deja reçu une super technique pour le meme effet (merci MFERRAND), mais je veux quand même élucider cette folie

Amicalement

Lucas

Bonjour,

Dans : Private Sub Worksheet_Change(ByVal Target As Range) de la feuille AB

J'enlèverai les Else, excepté à If Range("k15").Value = 6 Then

Gelinotte

B'soir,

Alors, oui, mais non, en retirant les "Else" les lignes ne se masque plus (en effet, les else permettent de masquer les lignes si la ligne "if" n'est pas réalisable)

Du coup, ca permet toujours d'afficher mais pas masquer.

Merci quand meme

T'arrête jamais !

Si tu as établi une correspondance continue entre 2 valeurs. Il faut régler ça dans la fenêtre de Propriétés (tu as une icône pour l'ouvrir à côté du bouton "Mode Création").

Par défaut il est réglé de 0 à 100 avec un pas de 1. Si tu utilises les valeurs de 0 à 6, tu mets le Max sur 6, cela règlera les petits dysfonctionnements.

Je n'ai pas regardé tes correspondances, mais j'ai vu que tu opères avec Change. Ayant mis une cellule liée et réagissant par rapport à la valeur de la cellule, tu peux supprimer tout le code du bouton, il ne sert à rien et est probablement parasite.

Mais la méthode est un peu lourde. Préférable : pas de cellule liée, le Spin, au changement lance une macro en lui passant sa valeur et le code de Change dans une macro ordinaire qui opère à partir de la valeur passée directement par le SpinButton.

Autre possibilité avec un SpinButton c'est de le faire boucler comme une horloge (après 12 elle passe à 1, et là même dans les 2 sens.

Par exemple : tu utilises les valeurs de 1 à 8 , tu règles le Min à 0 et le Max à 9 et tu programmes le Spin pour quand il atteint 0 sa valeur = 8, et quand il atteint 9 sa valeur =1. Tu passes ainsi en continu de 8 à 1 et de 1 à 8 selon le sens.

Autres conseils annexes en passant, selon ce que j'ai aperçu au passage :

- Si tu fais référence à la ligne entière de la feuille avec Rows(20), inutile d'utiliser EntireRow, c'est redondant, tu redoubles ton appel. C'est quand ce qui précède n'indique la ligne entière qu'il faut l'ajouter (tu en as vu dans mon code avec .Rows(xx) mais c'est parce que le point devant référait à une plage nommée et ne représentait qu'une partie de la ligne de la feuille.)

Si tu ne numérotes qu'une ligne, les guillemets sont inutiles.

- Et ta procédure Change est pas très fiable, car tu lui fait tester K15, quoi qu'il se pass sur la feuille. Cela peut finir par produire des évènements indésirables.

Il faut tester si Target.Address = [K15].Address et seulement dans ce cas tu interviens.

Et tu formules les commandes dans une instruction Select Case [K15].Value

en dessous les Case 0... Case 1 ...jusqu'à 6 (ou plus je sais pas) et sous chaqu Case le code le concernant (et à la fin End Select).

Bon je disparaît

A+

Ferrand

yucass a écrit :

B'soir,

Alors, oui, mais non, en retirant les "Else" les lignes ne se masque plus (en effet, les else permettent de masquer les lignes si la ligne "if" n'est pas réalisable)

Du coup, ca permet toujours d'afficher mais pas masquer.

Merci quand meme

Bonjour,

Chez-moi, ça fonctionne "impec mon mec" en enlevant les Else sauf à la valeur 6

M'enfin ...

Gelinotte

Rectification de mes remarques précédentes pour ta procédure Change (ce n'enlève rien à mes conseils de faire autrement) dans laquelle je recommande tester préalablement Target/K15, le test fait tu recueilles la valeur K15 en lui ajoutant 15 dans une variable (Integer) n par exemple (ou ce que tu veux et tu réduis l'ensemble des commandes à 3 lignes :

n = Range("K15").Value + 15
    Rows(n & ":20").Hidden = True
    Rows("15:" & n).Hidden = False

Bye

Rechercher des sujets similaires à "afficher masquer ligne spinbutton"