Masquer lignes et colonnes sur plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion macno
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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😛
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
418
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
0
Affichages
538
Retour