Colonnes cachées (VBA)

  • Initiateur de la discussion Initiateur de la discussion Bradvid
  • 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 !

Bradvid

XLDnaute Occasionnel
Bonjour à Tous,

Je voudrais pouvoir cacher des colonnes en sachant que celles que je veux cacher contiennent une cellule avec la valeur 1 et uniquement celle là.

Je sais comment cacher des colonnes en langage VBA mais je ne sais pas comment indiquer une condition pour que seulement celle qui contienne un 1 soient cachées.

Merci pour votre aide.
 
Re : Colonnes cachées (VBA)

bonjour Bradvid

A adapter eventuellement pour le nombre de colonnes

Code:
Sub test()
For n = 1 To 256
 If Application.WorksheetFunction.CountIf(ActiveSheet.Columns(n), 1) > 0 Then
   Columns(n).Hidden = True
 End If
Next n
End Sub
 
Re : Colonnes cachées (VBA)

Re Bradvid

je pense que ce sont les cellules qui peuvent être testées, regarde le code ci dessous si tu peux t'en inspirer :

Code:
If Range("I1").Value = 1 Then Columns("I:I").EntireColumn.Hidden = True

il faut peut être boucler sur toutes les cellules de la colonne.

bonne journée
@+
 
Re : Colonnes cachées (VBA)

Bonjour,

Ci-joint un exemple avec Find.

Sub test()
Set c = ActiveSheet.Cells.Find(1)
While Not c Is Nothing
c.EntireColumn.Hidden = True
Set c = ActiveSheet.Cells.FindNext(c)
Wend
End Sub

Sub Afficher()
Cells.EntireColumn.Hidden = False
End Sub

EDIT : Bonjour PierreJean et Pierrot.
 

Pièces jointes

Re : Colonnes cachées (VBA)

Bonjour PierreJean, Re Pierrot,

En utilisant la macro de PierreJean (Qui semble plus adaptée), il semblerait qu'elle balaye toutes les cellule des colonnes alors que je voudrais qu'elle aille regarder sur la ligne 3 d'un certain nombre de colonne.

J'ai essayé d'adapter le code mais sans succès.

Merci en tout cas à Pierrot qui m'aide beaucoup en ce moment! 😱))
 
Re : Colonnes cachées (VBA)

Re,

Avec la restriction des colonnes :

Sub test3()
Mescolonnes = Array("D", "G", "K")
For i = 0 To UBound(Mescolonnes)
Range(Mescolonnes(i) & "3").EntireColumn.Hidden = True
Next
End Sub

Le mieux serait de nommer les cellules de façon discontinue et de boucler dessus ...
 
Re : Colonnes cachées (VBA)

Re,

Avec la restriction des colonnes :

Sub test3()
Mescolonnes = Array("D", "G", "K")
For i = 0 To UBound(Mescolonnes)
Range(Mescolonnes(i) & "3").EntireColumn.Hidden = True
Next
End Sub

Le mieux serait de nommer les cellules de façon discontinue et de boucler dessus ...

Bonsoir Catrice,

J'ai un petit soucis avec ma macro, voilà le code :
Code:
Sub Macro1()
Application.ScreenUpdating = False
Set c = ActiveSheet.Rows("156:156").Find(1)
MonAddresse = c.Address
    While Not c Is Nothing
        c.EntireColumn.Hidden = True
        Set c = ActiveSheet.Rows("156:156").FindNext(c)
        If c.Address = MonAddresse Then Exit Sub
    Wend
Application.ScreenUpdating = True
End Sub

Le pb est que là où il y a la valeur 1 il s'agit d'un calcul et non une valeur.
Je pense que la macro ne fonctionne pas à cause de cela.
Que dois-je rajouter pour que la macro prenne en compte la valeur 1?

Merci pour ton aide.
 
Re : Colonnes cachées (VBA)

Bonsoir,

N'ayant pas vu Catrice depuis un moment, je te propose :
Code:
Sub Macro2()
Application.ScreenUpdating = False
Set c = ActiveSheet.Rows("15:15").Find(1, LookIn:=xlValues)
MonAddresse = c.Address
    While Not c Is Nothing
        c.EntireColumn.Hidden = True
        Set c = ActiveSheet.Rows("15:15").FindNext(c)
        If c.Address = MonAddresse Then Exit Sub
    Wend
Application.ScreenUpdating = True
End Sub
Cordialement
 
Re : Colonnes cachées (VBA)

Bonsoir Spitnolan08,

Tout d'abord merci pour ta réponse.

La macro coince au niveau de If cAddress=Monaddresse then Exit Sub.

As tu une solution? En + je ne sais pas à quoi sert cette ligne de code.....

Merci pour ton aide.
 
Re : Colonnes cachées (VBA)

Re,

Oui, je pense avoir une solution :
Code:
Sub Macro2()
Application.ScreenUpdating = False

Set c = ActiveSheet.Rows("15:15").Find(1, LookIn:=xlValues)
If Not c Is Nothing Then
    MonAddresse = c.Address
    Do
        c.EntireColumn.Hidden = True
        Set c = ActiveSheet.Rows("15:15").FindNext(c)
        If c Is Nothing Then Exit Sub
    Loop
End If
    
Application.ScreenUpdating = True
End Sub
Cordialement
 
Re : Colonnes cachées (VBA)

Re,

J'ai oublié de répondre à ta question :
La macro coince au niveau de If cAddress=Monaddresse then Exit Sub.
As tu une solution? En + je ne sais pas à quoi sert cette ligne de code.....
En fait, cette instruction devrait permettre à la macro de s'arrêter lorsqu'elle a trouvé toutes les valeurs 1 et qu'elle revient sur la 1ère cellule concernée. Mais ici, le fait de cacher les colonnes masque les valeurs 1 et la macro ne trouve plus de correspondance : c n'ayant plus d'existence tu ne peux obtenir son adresse d'ou bug...
Avec
Code:
If c Is Nothing Then Exit Sub
tu testes si la cellule existe et si elle n'existe pas tu sors... et tu évites le bug...🙂

Cordialement
 
- 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

Discussions similaires

Réponses
22
Affichages
703
Retour