Masquer lignes et colonnes sur plusieurs feuilles

macno

XLDnaute Nouveau
Bonjour,

Je travaille sur un classeur ou certaines colonnes et lignes doivent être masquées.
Je réutilise pour ça une macro de jp14 : https://www.excel-downloads.com/threads/masquer-certaines-lignes-suivant-conditions.131493/
Le code ci-dessous bloque (erreur 2023 ou erreur incompatibilité de type, souligné en jaune dans l'interface VB)

Pourriez-vous m'aider pour lever cette erreur et éventuellement de meilleure idées pour alléger ce code ?

PI :
- les lignes sont masquées si je trouve 15 dans la ligne en colonne F (correspond à la couleur du format de la ligne en colonne E)
- Les colonnes sont masquées si je trouve le texte X ou Y dans l'entête de colonne)

Merci pour votre aide :)

Code:
Sub Masque_Lignes_et_Colonnes()

Dim Target As Range
Dim cellule As Range

'evite le flashage
    Application.ScreenUpdating = False

    Set Target = Sheets("14").Range("K7")
    With Sheets("14")

    .Rows("2:" & 200).EntireRow.Hidden = False

'La plage de cellule ou il faut chercher

        For Each cellule In .Range("K7:K" & 200)
        
'on récupere la valeur de la cellule si cest 15 on masque

             If cellule.Value = "15" Then
                .Rows(cellule.Row).EntireRow.Hidden = True
             End If
            
        Next cellule

    End With

'On repete la meme operation sur la deuxieme feuille (il y en aura plus)

    Set Target = Sheets("50").Range("K7")
    With Sheets("50")

    .Rows("2:" & 200).EntireRow.Hidden = False
        
        For Each cellule In .Range("K7:K" & 200)
        
            If cellule.Value = "15" Then
             .Rows(cellule.Row).EntireRow.Hidden = True
            End If
                      
            
        Next cellule

    End With





'Ensuite On Masque les colonnes de la premiere feuille

    Set Target = Sheets("14").Range("G3")

    With Sheets("14")

    .Columns("A:IV").EntireColumn.Hidden = False


        For Each cellule In .Range("G3:IV3" & 256)
              
                
 'dans chaque il y a des colonnes avec toujours les deux mêmes en tetes à masquer, ce n'est plus un nombre comme pour les lignes a masquer mais du texte
 
            If cellule.Value = "Volume reserve par l annonceur " Then
                .Columns(cellule.Column).EntireColumn.Hidden = True
            End If
            
            If cellule.Value = "Part de voix indicative reservee par l annonceur" Then
                .Columns(cellule.Column).EntireColumn.Hidden = True
            End If
            
        Next cellule
              
    End With

'Masque les lignes de la deuxieme feuille, il y en a potentiellement plus


    Set Target = Sheets("50").Range("G3")
    With Sheets("50")

    .Columns("A:IV").EntireColumn.Hidden = False
   '
         For Each cellule In .Range("G3:IV3" & 256)
                
                
 '!!!!!! dans la ligne suivante la macro bloque toujours avec l'erreur 2023 ou 13 incompatibilité de type. Pourtant c'est le meme code que pour la premiere feuille !!!!
 
 
            If cellule.Value = "Volume reserve par l annonceur " Then
                .Columns(cellule.Column).EntireColumn.Hidden = True
            End If
            
            If cellule.Value = "Part de voix indicative reservee par l annonceur" Then
                 .Columns(cellule.Column).EntireColumn.Hidden = True
            End If
            
        Next cellule
    
    End With

Application.ScreenUpdating = True

End Sub
 

Pièces jointes

  • masque_lignes_et_colonnes.zip
    11.4 KB · Affichages: 69

JCGL

XLDnaute Barbatruc
Re : Masquer lignes et colonnes sur plusieurs feuilles

Bonjour à tous,

Peux-tu essayer avec :

Code:
For Each cellule In .Range("G3:IV3")
au lieu de

Code:
For Each cellule In .Range("G3:IV3" & 256)
et comme suggéré :
Code:
If cellule.Text = "Volume reserve par l annonceur " Then
au lieu de

Code:
If cellule.Value = "Volume reserve par l annonceur " Then
A+ à tous
 

macno

XLDnaute Nouveau
Re : Masquer lignes et colonnes sur plusieurs feuilles

Merci fhoest et JCGL, je n'ai plus de messages d'erreur et çà fonctionne :)
:)

J'imagine qu'au lieu de répéter le code pour chaque action il doit y avoir moyen de simplifier (surtout qu'il y a 13 feuilles à traiter !), en tout cas çà marche:p
 

JCGL

XLDnaute Barbatruc
Re : Masquer lignes et colonnes sur plusieurs feuilles

Bonjour à tous,

Peux-tu essayer avec ce code :

Code:
Option Explicit
Sub Masque_Lignes_et_Colonnes()
Dim Cellule As Range
Dim X As Integer
 
Application.ScreenUpdating = 0
For X = 1 To Sheets.Count
With Sheets(X)
    .Rows("2:200").EntireRow.Hidden = False
    For Each Cellule In .Range("F7:F200")
    If Cellule.Value = "15" Then .Rows(Cellule.Row).EntireRow.Hidden = True
    Next Cellule
 
    .Columns("A:IV").EntireColumn.Hidden = False
        For Each Cellule In .Range("G3:IV3")
 
            If Cellule.Value = "Volume reserve par l annonceur " Then
                .Columns(Cellule.Column).EntireColumn.Hidden = True
            End If
            If Cellule.Value = "Part de voix indicative reservee par l annonceur" Then
                .Columns(Cellule.Column).EntireColumn.Hidden = True
            End If
        Next Cellule
End With
Next X
Sheets(1).Activate
Range("A1").Select
End Sub

Comme le seul 15 que j'ai trouvé était en F, j'ai fait avec...

A+ à tous
 

Discussions similaires