Supprimer deux lignes et une ligne

Fermé
Fabrice.GAC77 Messages postés 2 Date d'inscription dimanche 17 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016 - 17 juil. 2016 à 14:06
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 18 juil. 2016 à 11:30
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.
A voir également:

1 réponse

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 17/07/2016 à 18:10
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
Fabrice.GAC77 Messages postés 2 Date d'inscription dimanche 17 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016
17 juil. 2016 à 21:56
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Fabrice.GAC77 Messages postés 2 Date d'inscription dimanche 17 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016
18 juil. 2016 à 11:30
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