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
A voir également:
- Masquer des colonnes en fonction du contenu d'une celluele
- Fonction si et - Guide
- Comment faire des colonnes sur word - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Déplacer une colonne excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
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/
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/
Bonjour
Un (autre) exemple
http://www.cjoint.com/c/EGgnhtL82og
Ctrl+k pour masquer
Ctrl+r pour "démasquer"
Cdlmnt
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionConst 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
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"