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   -
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
A voir également:

5 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
0
roukili Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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"
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Un (autre) exemple
http://www.cjoint.com/c/EGgnhtL82og
Ctrl+k pour masquer
Ctrl+r pour "démasquer"

Cdlmnt
0
roukili Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour cet exemple mais j'ai pas accès à ce site je vous remercie d'avance de me recopier le code
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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

0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Oups, j'ai mal lu !!
http://www.cjoint.com/c/EGgnZdVdjsg
Ctrl+m pour lancer la macro

Cdlmnt
0
roukili Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
mon réseau bloque le lien c'est pourquoi je vous demande de m'envoyer le code de la macro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0