Macro pour masquer colonnes sans valeur [Résolu/Fermé]

Signaler
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
-
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
-
Bonjour,

Je voudrais créer une macro pour masquer les colonnes de (B à AI) qui ne contiennent pas de valeur. Certaines cellules des colonnes en question sont parfois remplies de textes ou de "#VALEUR!". (la plage concernée est B2:AI66)

Pour faire plus simple, je voudrais pourvoir afficher seulement les colonnes contenant des valeurs <>0. Le reste on masque. Je vais associer ça à un bouton.

Est ce que quelqu'un aurait la gentillesse de m'aider ?
J'ai essayé de faire ça moi même mais j'ai beau essayer je ne comprends vraiment rien au VBA :'(

2 réponses

Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
Bonjour

Je voudrais créer une macro pour masquer les colonnes de (B à AI) qui ne contiennent pas de valeur.
Peux tu préciser
Option 1. Aucune valeur dans toute la colonne
Option 2. Pas de valeur dans une ou plusieurs lignes de cette colonne

Cdlmnt
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
Bonjour,
Merci de ton intérêt pour ma question :)
En fait c'est l'option 1. Aucune valeur dans toute la colonne.
Est ce que c'est possible de faire ça ?
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
à toi d'adapter les colonnes de début et de fin
si les colonnes ont une entête non vide tu remplaces = 0 par = 1

Const codeb = 3   ' colonne début > C
Const cofin = 9   ' colonne fin > I

Public Sub Masquer()
Dim co As Long
For co = codeb To cofin
  If Application.WorksheetFunction.CountA(Columns(co)) = 0 Then Columns(co).Hidden = True
Next co
End Sub

Cdlmnt
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
Bon ça ne fonctionne pas... sans doute parce que dans les dites colonnes il y a du texte ou de #valeur.
Une idée ?
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
Juste je reprécise : "Certaines cellules des colonnes en question sont parfois remplies de textes ou de "#VALEUR!"
donc forcément si tu met =0 sans faire abstraction du texte ça ne fonctionne pas ^^ enfin de suppose !
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
Il faudra peut-être insérer une fonction de type "TEXTE=0" et "#VALEUR=0" ou SIERREUR=0 un truc du genre tu vois ce que je veux dire ?
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
J'ai trouvé la solution :)
Messages postés
145
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
13 février 2020
36
Const codeb = 2   ' colonne début > C
Const cofin = 35   ' colonne fin > I

Public Sub Masquer()
Dim co As Long
For co = codeb To cofin
  If Application.ErrorCheckingOptions.InconsistentTableFormula = True Then Columns(co).Hidden = True
  If Application.WorksheetFunction.Count(Columns(co)) > 0 Then Columns(co).Hidden = False
Next co
End Sub