colonnes a afficher si

zesuila

XLDnaute Occasionnel
j'ai des colonnes à partir de B qui ont pour nom : auto - camion - velo-bateau -pied - avion - et ces noms peuvent être doublés voire même triplés (plusieurs nom de colonnes avec camion par exemple )
ce que je voudrais c'est que en a1 par exemple si je tape camion, il ne m'affiche que les colonnes ou l y a camion
puis si je ne tape le mot "tout" toutes les colonnes se réaffichent (et idem donc si je tape auto, ou avion etc..)
merci
 

kjin

XLDnaute Barbatruc
Re : colonnes a afficher si

Bonjour,
En supposant que les noms de colonnes (!) soient sur la ligne 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    ActiveSheet.Range("B:IV").Columns.Hidden = True
    For i = 2 To 256
        If Cells(1, i) Like "*" & Cells(1, 1) & "*" Then Columns(i).Hidden = False
    Next
End If
End Sub
A+
kjin
 

zesuila

XLDnaute Occasionnel
Re : colonnes a afficher si

bonjour kjin
c'est bien cela ! merci
par contre c'est pas gênant mais j'ai les cellules qui se rafraichissent un moment quand je demande toutes les colonnes. Je suppose que c'est dû au recalcul pour afficher les colonnes (tu avais mis jusque IV j'ai réduit un peu mais cela le fait toujours encore un peu)
ya pas un bout de code pour que ce soit instantané ?
en tout cas ca me va quand même
merci
 

kjin

XLDnaute Barbatruc
Re : colonnes a afficher si

re,
Essaies peut-être comme ceci
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    Application.ScreenUpdating = False
    ActiveSheet.Range("B:IV").Columns.Hidden = False
    If Target <> "Tout" Then
    ActiveSheet.Range("B:IV").Columns.Hidden = True
        For i = 2 To 256
            If Cells(1, i) Like "*" & Cells(1, 1) & "*" Then Columns(i).Hidden = False
        Next
    End If
    Application.ScreenUpdating = True
End If
End Sub
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : colonnes a afficher si

Re,
Dans la liste, tu as "tout" et non "Tout"
De plus, les titres de colonnes sont sur la ligne 2 et non 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    Application.ScreenUpdating = False
    ActiveSheet.Range("B:AZ").Columns.Hidden = False
    If UCase(Target) <> "TOUT" Then
    ActiveSheet.Range("B:AZ").Columns.Hidden = True
        For i = 2 To 256
            If Cells(2, i) Like "*" & Target & "*" Then Columns(i).Hidden = False
        Next
    End If
    Application.ScreenUpdating = True
End If
End Sub
A+
kjin
 

Discussions similaires