Macros à la suite?

Re,

Une proposition :

Sub Masquer_lignes()
Dim O As Worksheet
Dim LI As Integer
Dim PL As Range
Dim CEL As Range

Set O = Worksheets("Effectif")
Application.ScreenUpdating = False
For LI = 6 To 100
    Set PL = O.Range(O.Cells(LI, 5), O.Cells(LI, 11)).SpecialCells(xlCellTypeVisible)
    For Each CEL In PL
        If CEL.Value <> "" Then GoTo suite
    Next CEL
    O.Rows(LI).Hidden = True
suite:
Next LI
Application.ScreenUpdating = True
End Sub

Bonjour

voila une macro Cache Colonne & Ligne a toi de voir

Sub CacheColonneLigne()
Dim C&, L&
Application.ScreenUpdating = False
Cells.EntireColumn.Hidden = False
Cells.EntireRow.Hidden = False
    For C = 5 To 11
        If Cells(2, C).Value = "" Then
            Columns(C).EntireColumn.Hidden = True
        End If
    Next
    For L = 6 To 100
        For C = 5 To 11
            If Cells(L, C).Value = "" Then
                Rows(L).EntireRow.Hidden = True
                Exit For
            End If
        Next
    Next
End Sub

Bonjour

voila une macro Cache Colonne & Ligne a toi de voir

Sub CacheColonneLigne()
Dim C&, L&
Application.ScreenUpdating = False
Cells.EntireColumn.Hidden = False
Cells.EntireRow.Hidden = False
    For C = 5 To 11
        If Cells(2, C).Value = "" Then
            Columns(C).EntireColumn.Hidden = True
        End If
    Next
    For L = 6 To 100
        For C = 5 To 11
            If Cells(L, C).Value = "" Then
                Rows(L).EntireRow.Hidden = True
                Exit For
            End If
        Next
    Next
End Sub

Merci Archer, j'ai testé ta macro, très intéressant.

J'ai du la compléter pour bien signifier que l'opération doit se faire sur la feuille "Effectif" :

Sub CacheColonneLigne()
Dim O As Worksheet
Dim C&, L&

Set O = Worksheets("Effectif")
Application.ScreenUpdating = False
O.Cells.EntireColumn.Hidden = False
O.Cells.EntireRow.Hidden = False
    For C = 5 To 11
        If O.Cells(2, C).Value = "" Then
            O.Columns(C).EntireColumn.Hidden = True
        End If
    Next
    For L = 6 To 100
        For C = 5 To 11
            If O.Cells(L, C).Value = "" Then
                O.Rows(L).EntireRow.Hidden = True
                Exit For
            End If
        Next

Cependant, ta macro ne conserve que les lignes avec tous les critères cochés,

c

Le but est de seulement supprimer les lignes vides, et de conserver celles où au moins un des critères est coché.

J'espère que c'est clair, merci!

Re,

Une proposition :

Sub Masquer_lignes()
Dim O As Worksheet
Dim LI As Integer
Dim PL As Range
Dim CEL As Range

Set O = Worksheets("Effectif")
Application.ScreenUpdating = False
For LI = 6 To 100
    Set PL = O.Range(O.Cells(LI, 5), O.Cells(LI, 11)).SpecialCells(xlCellTypeVisible)
    For Each CEL In PL
        If CEL.Value <> "" Then GoTo suite
    Next CEL
    O.Rows(LI).Hidden = True
suite:
Next LI
Application.ScreenUpdating = True
End Sub

Merci Thau !!!!

Ca fonctionne du tonnerre.

Un méga grand merci à toi et à tous les participants!

Ca marche dans tous les cas, sauf quand aucun critère n'est coché,

ERREUR 1004

Cela serait bien d'avoir le tableau sans les masque dans cette situation, mais bon, c'est anecdotique.

Merci.

Re,

Tu parles pour les colonnes, les lignes ou les deux ?

Bonjour

peux etre comme ca

Sub CacheColonneLigne()
Dim C&, L&, X&
Feuil4.Select
Application.ScreenUpdating = False
Cells.EntireColumn.Hidden = False
Cells.EntireRow.Hidden = False
    For C = 5 To 11
        If Cells(2, C).Value = "" Then
            Columns(C).EntireColumn.Hidden = True
        End If
    Next
    For L = 6 To Range("B" & Rows.Count).End(xlUp).Row
        X = 0
        For C = 5 To 11
            If Cells(L, C).Value <> "" Then
                X = X + 1
                Exit For
            End If
        Next
        If X = 0 Then Rows(L).EntireRow.Hidden = True
    Next
End Sub

A+

Maurice

Bonjour, je reviens vers vous en réactivant le tuto car j'ai oublié "un critère" dans mon fichier....

Vraiment désolé.

En plus des critères précédents, je me dois de masquer les lignes qui ne correspondent pas à la valeur affichée dans la colonne D2 de l'onglet "Effectif". Je m'explique, si cette cellule prend pour valeur "Quai A", seules les lignes contenant en colonne D la valeur Quai A doivent être affichées, donc : "Quai A" et "Quai A et point M". De même, si j'ai "Point M", je ne dois avoir seulement que les lignes avec "Point M" et "Quai A et point M".

Enfin, si j'ai "Quai A et point M" toutes les lignes (qui contiennent au moins un critère coché) doivent s'afficher.

J'ai testé la macro ci-dessous mais sans succès:

Sub MaskSite()
Dim Site As String
Dim l As Integer
Dim o As Worksheet
Set o = Worksheets("Effectif")
Site = o.Range("D2").Value
For l = 7 To 100
    o.Rows(l).EntireRow.Hidden = False
    If InStr(o.Range("D" & l).Value, Site) > 0 Then
    o.Rows(l).EntireRow.Hidden = False
    Else: o.Rows(l).EntireRow.Hidden = True
    End If
Next l
End Sub

Et l'ai placée dans la macro d'appel :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = Range("D1").Address Then
        Call Module1.MaskSite
        Call Module1.Worksheet_Calculate
        Call Module1.Masquer_lignes
    End If

End Sub

Merci d'avance pour vos lumières et désolé de vous solliciter une nouvelle fois, je n'avais pas cette information...

Help!

Rechercher des sujets similaires à "macros suite"