Supprimer deux lignes et une ligne [Fermé]

Signaler
Messages postés
2
Date d'inscription
dimanche 17 juillet 2016
Statut
Membre
Dernière intervention
17 juillet 2016
-
Messages postés
15766
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 mai 2021
-
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

Messages postés
9785
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
12 mai 2021
2 111
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
Messages postés
2
Date d'inscription
dimanche 17 juillet 2016
Statut
Membre
Dernière intervention
17 juillet 2016

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.:-)
Messages postés
15766
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 mai 2021
1 488 >
Messages postés
2
Date d'inscription
dimanche 17 juillet 2016
Statut
Membre
Dernière intervention
17 juillet 2016

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