Masquer des colonnes en fonction du contenu d'une celluele
roukili
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
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"