Pour masquer des colonnes en vba

Signaler
Messages postés
5
Date d'inscription
dimanche 24 décembre 2006
Statut
Membre
Dernière intervention
18 janvier 2008
-
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
-
Je cherche un code pour masquer des colonnes automatiquement



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




J’ai sur la ligne I2000 a AZ2000 une formule qui me donne un soit 1 soit 2 j’aimerais masquer tout les colonne qui a un 1 dans la ligne 2000



 




if [i2000]=2 then



Columns("II:II").Select





Selection.EntireColumn.Hidden = True




Else



Columns("II:II").Select





Selection.EntireColumn.Hidden = False





End if





If if [J2000]=2 then





Columns("JJ:JJ").Select





Selection.EntireColumn.Hidden = True





Else





Columns("JJ:JJ").Select





Selection.EntireColumn.Hidden = False





End if






 





Ect ….. Jusque a la colonne AL



 




J’aimerais un moyen plus simple car cette méthode et long a coder de plus je doit faire sa sur plusieurs feuille

merci

2 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

tu peux utiliser les boucles For Each... Next

par exemple:

Dim MaFeuille As Worksheet, MaPlage As Range, MaCelule as Range

For Each Mafeuille In ThisWorkbook.Worksheets ' pour chaque feuille dans la colection de feuille de ce document
   Set MaPlage = Mafeuille.range("I"&2000,"AJ"&2000)
   For Each MaCelule In MaPlage 'pour chaque celule de la colection MaPlage
      If Macelule.value = 2 then
         Columns(MaCelule.Column).EntireColumn.Hidden = True ' (MaCelule.Column) renvoi le numero de la colonne
      Else
         Columns(MaCelule.Column).EntireColumn.Hidden = False
      End If
   Next
Next

Joyeux Noel a Tous

A+
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
Salut,

tu peux coder de cette manière

Dim MyRange As Range: Dim MyColumn As Range
Set MyRange = [I2000]
Set MyColumn = [I:I]



MyColumn.EntireColumn.Hidden (MyRange.Value 1)





Cordialement, Jean-Paul  

______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé