Supprimer deux lignes et une ligne

Fabrice.GAC77 Messages postés 2 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis débutant en VBA ce code fonctionne sur une feuille simple
Sub Ligne2()
'
' Ligne Macro
'
'Cache les lignes de 2 à 10 de 2 en 2
'j=1 veut dire à partir de la ligne 1
'Step 3 Toutes les 2 lignes abc donnera ab
Dim j As Integer
For j = 1 To 23 Step 3
Rows(1 + j + 1).Select
Selection.EntireRow.Hidden = True
Next
End Sub

J'ai 50 groupes de trois lignes de saisies. Je souhaiterais masquer par une macro à partir de la ligne 1, la ligne 2 et la ligne 3.La seconde macro à partir de la ligne 1 masquer uniquement la 2.
Merci pour votre dévouement.

1 réponse

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Option Explicit

    Const lideb = 1

    ' supprime à partir de lideb+1, deux lignes toutes les trois lignes
    Public Sub SuppLignes23()
    Dim li As Long, lifin As Long
    With ActiveSheet
    lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    For li = lideb To lifin
    If (li - 1) Mod 3 <> 0 Then Rows(li).Hidden = True
    Next li
    End With
    End Sub

    ' supprime à partir de lideb+1, une lignes toutes les 3 lignes
    Public Sub SuppLignes2()
    Dim li As Long, lifin As Long
    With ActiveSheet
    lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    For li = lideb To lifin
    If li Mod 3 = 2 Then Rows(li).Hidden = True
    Next li
    End With
    End Sub

    Public Sub RAZ()
    Dim lifin As Long
    With ActiveSheet
    lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Rows(lideb & ":" & lifin).Hidden = False
    End With
    End Sub

    Cdlmnt
    0
    1. Fabrice.GAC77 Messages postés 2 Statut Membre
       
      Merci beaucoup pour votre réponse rapide. Je n’ai pas été assez précis vu que c’est la première fois que je demande quelque chose sur un forum. Je vous prie de bien vouloir m’excuser.
      Je voudrais utiliser 2 boutons CheckBox1_Click()
      A partir de la huitième ligne
      Je veux garder la première ligne, masquer les deux lignes du dessous, et ceci jusqu’à la fin de mon tableau qui s’arrête à la ligne 170
      Deuxième CheckBox2_Click()
      Je veux garder les deux premières lignes, masquer la troisième.
      Pardon pour mon manque de clarté.
      Merci encore.:-)
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Fabrice.GAC77 Messages postés 2 Statut Membre
         
        Bonjour a vous deux,

        Avec le code de ccm81, code a mettre dans VBA de la feuille des CheckBox

        Si Check1 cochee et coche 2, decoche 1 et inversement
        Deux Check decochees apres une cochee, RAZ-->toutes les lignes apparaissent

        Option Explicit
        Const lideb = 1
        
        ' supprime à partir de lideb+1, une lignes toutes les 3 lignes
        Private Sub CheckBox1_Click()
            Dim li As Long, lifin As Long
            
            Application.ScreenUpdating = False
            If Not CheckBox1 And Not CheckBox2 Then Call RAZ: Exit Sub
            If CheckBox1 Then CheckBox2.Value = 0
            With ActiveSheet
                Call RAZ
                lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
                For li = lideb To lifin
                    If li Mod 3 = 2 Then Rows(li).Hidden = True
                Next li
            End With
            Application.ScreenUpdating = True
        End Sub
        
        ' supprime à partir de lideb+1, deux lignes toutes les trois lignes
        Private Sub CheckBox2_Click()
            Dim li As Long, lifin As Long
            
            Application.ScreenUpdating = False
            If Not CheckBox2 And Not CheckBox1 Then Call RAZ: Exit Sub
            If CheckBox2 Then CheckBox1.Value = 0
            With ActiveSheet
                Call RAZ
                lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
                For li = lideb To lifin
                    If (li - 1) Mod 3 <> 0 Then Rows(li).Hidden = True
                Next li
            End With
            Application.ScreenUpdating = True
        End Sub
        
        Public Sub RAZ()
            Dim lifin As Long
            With ActiveSheet
                lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
                Rows(lideb & ":" & lifin).Hidden = False
            End With
        End Sub
        0