Masquer une colonne VBA

MERLIN

XLDnaute Junior
Bonjour à tous et à toutes !!

J'aimerais pouvoir masquer les colonnes qui présentent en ligne 1 la valeur "1" (par exemple)... préservant les autres.

Merci de votre aide.

=MERLIN=
 

mromain

XLDnaute Barbatruc
Re : Masquer une colonne VBA

bonjour MERLIN,

voici un code :

Code:
Sub test()
With ThisWorkbook.Sheets("Feuil1")
    For i = .Cells(1, .Columns.Count).End(xlToLeft).Column To 1 Step -1
        If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = True
    Next i
End With
End Sub

a+
 

MERLIN

XLDnaute Junior
Re : Masquer une colonne VBA

C'est encore moi.

Bonsoir à tous.

Si je décide de vouloir les démasquer ? c'est-à-dire dans le cas présent démasquer toutes les colonnes avec en ligne 1 la valeur ="1".

Ne serait-ce pas plus simple de réduire la taille de la colonne à 0 plutôt que de la masquer ?

Merci d'avance.

Bonne soirée à tous !
 

Excel-lent

XLDnaute Barbatruc
Re : Masquer une colonne VBA

Bonsoir Merlin,

Non, il est plus simple et plus pratique de masquer/démasquer des colonnes (car lors du démasquage, elles retrouvent automatiquement et sans opération supplémentaire leurs largeurs d'avant le masquage!

MERLIN à dit:
Si je décide de vouloir les démasquer ? c'est-à-dire dans le cas présent démasquer toutes les colonnes avec en ligne 1 la valeur ="1".

Pour cela, il te suffit de remplacer "True" par "False" :

Code:
If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = [COLOR="Red"][B]True[/B][/COLOR]

devient :
Code:
If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = [COLOR="Blue"][B]False[/B][/COLOR]

Ou mille fois plus rapide : déselectionner d'un coup TOUTES les colonnes!

Ta macro :
Code:
Sub test()
With ThisWorkbook.Sheets("Feuil1")
    For i = .Cells(1, .Columns.Count).End(xlToLeft).Column To 1 Step -1
        If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = [COLOR="Blue"][B]False[/B][/COLOR]
    Next i
End With
End Sub

Devient tout simplement :
Code:
Sub test()
    Cells.EntireColumn.Hidden = False
End Sub
Cette macro placé dans "module" agit sur la feuille active du moment

C'est pas plus court et plus rapide? Mais après, cela dépend de tes impératifs!

Bonne soirée
 
Dernière édition:

MERLIN

XLDnaute Junior
Re : Masquer une colonne VBA

Bonsoir Merlin,

...

Pour cela, il te suffit de remplacer "True" par "False" :

Code:
If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = [COLOR="Red"][B]True[/B][/COLOR]

devient :
Code:
If .Cells(1, i).Text = "1" Then .Columns(i).Hidden = [COLOR="Blue"][B]False[/B][/COLOR]

...

Bonjour,
J'avais déjà essayé de remplacer True par False et ce sans succès.
Je souhaite pouvoir démasquer au cas par cas... c'est-à-dire si j'ai un certain nombre de colonne avec en ligne 2 la valeur = "1" ... plutôt que celles avec la valeur = "2"... c pour cela qu'en jouant avec la taille de la colonne je pensais que cela pourrait être plus simple.

Sub Taille0()
Dim Cel As Range
Application.ScreenUpdating = False
With Sheets("INITIAL")
.Cells.EntireColumn.Hidden = False
DerCol = .[IV2].End(xlToLeft).Column
For Each Cel In .Range(.Cells(2, 6), .Cells(2, DerCol))

If Cel.Value = 1 Then activeCel.EntireColumn.Select
selection.Cel.ColumnWidth = 0
Next Cel
End With
End Sub

ET là dans ce cas présent, j'ai un beau bug.

D'avance merci.

=MERLIN=
 

Discussions similaires

Réponses
2
Affichages
216

Statistiques des forums

Discussions
312 590
Messages
2 090 040
Membres
104 354
dernier inscrit
Chass