Masquer une colonne VBA

  • Initiateur de la discussion Initiateur de la discussion MERLIN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

MERLIN

Guest
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=
 
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+
 
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 !
 
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:
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=
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
307
Réponses
19
Affichages
784
Réponses
2
Affichages
475
Retour