Masquer des colonnes en fonction du contenu d'une celluele
roukili
Messages postés
17
Statut
Membre
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
j'ai un fichier Excel qui contient des données et je souhaite masquer les lignes et les colonnes qui ne contiennent pas une chaine de caractères; "DE" par exemple
j'ai essayé ce code pour les lignes mais j'arrive pas à l'adapter pour les colonnes
Private Sub CommandButton1_Click()
Dim Tableau as range
Cells.EntireRow.Hidden = False 'On commence par tout affichier
Set tableau = Range("K17:DE88") 'Tableau c'est ou sont les données, corrige au besoin
tableau.EntireRow.Hidden = True 'On CACHE cette zone
For C = 17 To Cells(17, Cells.Columns.Count).End(xlToLeft).Column 'Pour chaque colonne
For L = 11 To Range("K" & Rows.Count).End(xlUp).Row 'On regarde chaque ligne
If Cells(L, C).Value Like "*DE*" Then 'on vérifie si la valeur contient "DE"
Rows(L).EntireRow.Hidden = False 'Et si oui, on affichie
End If
Next L 'Prochaine ligne
Next C 'Prochaine colonne
End Sub
j'ai un fichier Excel qui contient des données et je souhaite masquer les lignes et les colonnes qui ne contiennent pas une chaine de caractères; "DE" par exemple
j'ai essayé ce code pour les lignes mais j'arrive pas à l'adapter pour les colonnes
Private Sub CommandButton1_Click()
Dim Tableau as range
Cells.EntireRow.Hidden = False 'On commence par tout affichier
Set tableau = Range("K17:DE88") 'Tableau c'est ou sont les données, corrige au besoin
tableau.EntireRow.Hidden = True 'On CACHE cette zone
For C = 17 To Cells(17, Cells.Columns.Count).End(xlToLeft).Column 'Pour chaque colonne
For L = 11 To Range("K" & Rows.Count).End(xlUp).Row 'On regarde chaque ligne
If Cells(L, C).Value Like "*DE*" Then 'on vérifie si la valeur contient "DE"
Rows(L).EntireRow.Hidden = False 'Et si oui, on affichie
End If
Next L 'Prochaine ligne
Next C 'Prochaine colonne
End Sub
5 réponses
-
Re bonjour,
Inspire toi de ce site:
https://excel.developpez.com/actu/47690/Boucles-pour-parcourir-une-colonne-une-ligne-une-plage-de-donnees-deux-nouvelles-methodes/
-
Re bonjour;
j'ai regardé le lien mais comme je suis un débutant en VB je comprends pas trop comment faire la fonction inverse de la fonction que j'ai décrie au dessus CàD: masquer les colonnes dont les cellule appartenant à la plage de donnée K17:DE88 si elles ne contiennes pas une valeur donnée "X"
-
-
Bonjour
Un (autre) exemple
http://www.cjoint.com/c/EGgnhtL82og
Ctrl+k pour masquer
Ctrl+r pour "démasquer"
Cdlmnt -
Suivant l'exemple donné sur le site:
Sub For_Each_Next_Plage() Dim FL1 As Worksheet, Cell As Range, Plage As Range, NoCol As Integer, NoLig As Long Dim Var1 Set FL1 = Worksheets("Feuil1") With FL1 'ou en utilisant l'objet Plage (range) de la plage Set Plage = .Range("K17:DE88") For Each Cell In Plage 'Valeur de la cellule lue Var1 = Cell.Value If Var1 = "DE" Then NoCol = Cell.Column NoLig = Cell.Row Rows(NoLig).EntireRow.Hidden = False 'Et si oui, on affichie Columns(NoCol).EntireColumn.Hidden = False 'Et si oui, on affichie End If Next End With Set FL1 = Nothing Set Plage = Nothing End Sub
-
Oups, j'ai mal lu !!
http://www.cjoint.com/c/EGgnZdVdjsg
Ctrl+m pour lancer la macro
Cdlmnt -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Const plage = "C2:M30" Const valeur = "DE" Public Sub RAZ() Range(plage).Rows.Hidden = False Range(plage).Columns.Hidden = False End Sub Public Sub Masquer() Dim obj As Object, tadr, li As Long, co As Long, plage2 As Range Dim nbli As Long, nbco As Long, coco As String, adr As String, lili As Long nbli = Range(plage).Rows.Count nbco = Range(plage).Columns.Count For li = 1 To nbli adr = Range(plage).Cells(li, 1).Address lili = Split(adr, "$")(2) Set plage2 = Range(plage).Rows(li) Set obj = plage2.Find(valeur, , , xlWhole) If obj Is Nothing Then Rows(lili).Hidden = True Next li For co = 1 To nbco adr = Range(plage).Cells(1, co).Address coco = Split(adr, "$")(1) Set plage2 = Range(plage).Columns(co) Set obj = plage2.Find(valeur, , , xlWhole) If obj Is Nothing Then Columns(coco).Hidden = True Next co End Sub
Cdlmnt-
Et en un peu plus court
Const NF = "Feuil1" Const plage = "C2:M30" Const valeur = "DE" Public Sub RAZ() Range(plage).Rows.Hidden = False Range(plage).Columns.Hidden = False End Sub Public Sub Masquer() Dim obj As Object, li As Long, co As Long, plage2 As Range, nbli As Long, nbco As Long With Sheets(NF).Range(plage) nbli = .Rows.Count nbco = .Columns.Count For li = 1 To nbli Set plage2 = .Rows(li) Set obj = plage2.Find(valeur, , , xlWhole) If obj Is Nothing Then .Rows(li).Hidden = True Next li For co = 1 To nbco Set plage2 = .Columns(co) Set obj = plage2.Find(valeur, , , xlWhole) If obj Is Nothing Then .Columns(co).Hidden = True Next co End With End Sub
-