Cases à cocher et masquage de cellules

Bonjour à tous,

Voilà mon problème, j'aimerais conditionner des lignes pour qu'elles soient masquées grace à une "case à cocher" (ou autre) ... pour éviter de surcharger mon document (il ne faut pas qu'elles soient inactives ou invisibles)

Merci d'avance ...

PS: Je débute sur excel

28fichier-travail.xlsm (272.25 Ko)

Bonjour,

ajoute une checkbox et le code suivant dans l'éditeur VBA ( alt+F11, clique droit sur le nom de la feuille à gauche et ensuite Code )

Private Sub CheckBox1_Click()
        Rows("10:20").EntireRow.Hidden = CheckBox1
End Sub

Quand le checkbox est égale à true ( quand il est coché ) les lignes 10 à 20 se masque.

je t'envoie le fichier exemple

318testcheckbox.zip (7.61 Ko)
Blizard a écrit :

conditionner des lignes pour qu'elles soient masquées ...(il ne faut pas qu'elles soient ...invisibles)

Alors là ça va être difficile...

Sinon pour masquer une ligne tu la sélectionnes Clic Droit sur le Numéro de la ligne... Masquer

A+

Merci Math (et Galopin dans une autre mesure )

Ca à l'air de bien marcher (enfin sur ton fichier), cependant j'ai 2-3 petites questions :

- les lignes que je souhaite masquer comprennent elles aussi des "cases a cocher" et je n'arrive pas à les intégrer

- J'ai cette application à faire un certains nombre de fois, dois-je la refaire à chaque fois ???

- Si oui : faut-il changer le numero de CheckBox ou simplement ceux des lignes à masquer

Merci d'avance

Bonjour,

le mieux serait de poster ton fichier ( si possible ) pour y voir plus clair.

- Pour ta première question, ajoute les checkbox dans le code et cache les avec la propriété visible. Ex tu as une checkbox nommer chkACacher que tu veux masquer ainsi que les lignes 10 à 20:

Private Sub CheckBox1_Click()
        Rows("10:20").EntireRow.Hidden = CheckBox1
        chkACacher.Visible = Not CheckBox1
End Sub

- Pour ta deuxième questions, est-ce que tu veux dire que tu as plusieurs checkbox qui serviront à masquer des lignes ? Dans ce cas tu dois faire un code différent pour chaque checkbox concerné. Je te conseille de donner des noms à tes checkbox pour mieux te retrouver ex: chkMasqueLigneFacture ou chkMasqueLigneEntete

Encore une fois merci Math ...

J'espére que ce sera compréhensible ...

125essai-tableau.zip (13.32 Ko)

Dans mon exemple j'utilisais les checkbox de la boite à outils controle ( Affichage, Barres d'outils, boite à outils controle ) alors que tu utilises un objet shape, voici un exemple avec les shapes:

Public Sub MasquerOption2()

    With Sheets("Biblio")
        Dim Masquer As Boolean
        If .Shapes("chkMasquerOption2").ControlFormat.Value = xlOn Then
            Masquer = True
        Else
            Masquer = False
        End If

        .Rows("16:18").EntireRow.Hidden = Not Masquer
        .Shapes("chkOption2_1").Visible = Masquer
        .Shapes("chkOption2_2").Visible = Masquer
        .Shapes("chkOption2_3").Visible = Masquer
    End With
End Sub

dans ton fichier j'ai fait le test avec le chkbox de la ligne 14 et les lignes 16 à 18

141essai-tableau.zip (16.74 Ko)

Merci math pour ces solutions ... (j'y comprend pas grand chose arf!)

Seul petit hic c'est que je n'arrive pas à le modifier pour d'autre cellules ni a copier coller dans une autre feuille de calcul.

Faut-il tout retapper ou dois-je rajouter a la feuille mvb (si oui ou trouver les nomenclatures)

?

Bon premièrement écris une procedure par action que tu veux faire. En cliquant sur un checkbox tu veux cacher les lignes 10 à 20, copie le code que je t'ai écris renomme le par exemple MasquerLig1020 au lieu de MasquerOption2 et affecte cette macro à ton checkbox. Donne des noms explicite à tes checkboxs. revoici le code commenté:

'C'est le nom de la macro
Public Sub MasquerOption2()

    'ici remplace Biblio par le nom de la feuille où tu veux appliquer le traitement
    With Sheets("Biblio")
        'Une variable pour déterminer si oui ou non on doit masquer les lignes
        Dim Masquer As Boolean
        'On teste si le controle chkMasquerOption2 est coché, à remplacer par le nom que tu donneras à ton checkbox
        If .Shapes("chkMasquerOption2").ControlFormat.Value = xlOn Then
            Masquer = True
        Else
            Masquer = False
        End If

        'La propriété hidden (caché) des lignes 16 à 18 prend la veleur contraire à la variable masquer. Si masquer      est  égale à true alors la propriété caché est à faux
        .Rows("16:18").EntireRow.Hidden = Not Masquer
        'Masque des checkboxs qui était présent dans les lignes 16 à 18. Change pour les noms que tu leur donneras s'il y en as. La propriété dans ce case est Visible, donc elle prend la valeur de Masquer
        .Shapes("chkOption2_1").Visible = Masquer
        .Shapes("chkOption2_2").Visible = Masquer
        .Shapes("chkOption2_3").Visible = Masquer
    End With
End Sub

Voila, pour chaque opération de masquage, crée une macro, renomme tes checkboxs et entre les bonnes valeurs dans la macro

Merci math ... problème résolu et en plus j'ai compris lol

Je viens de poster une autre question a partir de ce forum...J'essaye de masque/afficher des lignes mais j'ai un probleme de selection delignes dans ma macro.

Rechercher des sujets similaires à "cases cocher masquage"