Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour cacher colonnes vides

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

S

sabdani

Guest
Bonjour,

J'essaie de faire une macro qui me cacherait les colonnes vides. Je ne suis pas vraiment calée en VBA donc je suis partie d'une macro pour cacher des lignes que j'ai trouvée sur ce forum. J'ai fait des modifications qui selon moi devraient marcher mais je n'arrive pas a executer la macro, j'ai des messages d'erreure me disant soit que le sub ou la fonction n'est pas defini soit qu'il est impossible d'executer la macro en mode arret. Voici la macro que j'ai faite :

Sub MasquerColonnesVides()
' Macro réalisé par Excel-lent

For i = [26].End(xlLeft).Colum To 2 Step -1

If Application.WorksheetFunction.CountBlank(Range(Cells(1, i), Cells(4, i))) = 4 Then
Column(i).EntireColumn.Hidden = True
End If

Next i

End Sub
Sub AfficherToutesLesColonnes()
' Macro réalisé par Excel-lent

Column.EntireColumn.Hidden = False

End Sub

Y a t-il une erreure dans ma macro ou est-ce que les messages d'erreur ont une autre cause?
Merci d'avance
Sabrina
 
Re : Macro pour cacher colonnes vides

Bonjour Mesdames,Messieurs


Essaie cette macro
Code:
Sub masquercolonnesvides() ' valable pour les versions inférieures à Excel 2007
Dim i
For i = 1 To 256
Columns(i).Hidden = Application.CountA(Columns(i)) = 0
Next i
End Sub
 
Re : Macro pour cacher colonnes vides

Merci beaucoup, cette petite macro fonctionn très bien 🙂 Maintenant j'aurais encore une question : est-ce possible que excel considère comme vide une cellule contenant une formule mais qui est vide car il n'y a pas de résultat ou est-ce plus simple d'utiliser une fonction comme "esterruer"pour masquer ces colonnes?
Merci
 
Re : Macro pour cacher colonnes vides

Cela laisse supposer que tu as des colonnes ne contenant que des formules (et rien d'autres) qui renvoient aucune valeur

Du style : SI(A1<>"";1;"")

Est-ce la cas ?

La macro précédent masque la colonne en prenant comme principe que tout la colonne est vide.
 
Re : Macro pour cacher colonnes vides

Oui c'est bien ca, j'ai des colonnes avec des formules du style SI(esterreur(recherchev(...)....),"",recherchev(...)).
Ce que je voudrais, c'est que les colonnes qui ne renvoient aucune valeur soient masquées automatiquement.
Peut qu'il vaudrait mieux que je retire le si de ma formule et que la macro cache les colonnes renvoyant une erreur non?
 
Re : Macro pour cacher colonnes vides

Essaie cette macro (qui fonctionne dans les cas suivants)

Les colonnes vides sont masquées lorsque:
- la colonne ne contient aucun donnée
- la colonne ne contient que des formules qui renvoient une chaine vide
(exemple: toutes les cellules de la colonne A contiennent cette formule
=SI(B1<>"";1;"")
alors la colonne A sera masquée si la colonne B est entiérement vide.

Code:
Sub masquercolonnesvidesV2() ' valable pour les versions inférieures à Excel 2007
Dim i
Application.ScreenUpdating = False
For i = 1 To 256
Columns(i).Hidden = Application.CountBlank(Columns(i)) = 65536
Next i
End Sub
 
Dernière édition:
Re : Macro pour cacher colonnes vides

Ca ne marche pas... mais c'est ma faute en fait, je me suis trompée de mémoire. quand il y a une erreur, excel ne me met pas rien dans la cellule mais "0", du coup c'est logique que ca ne marche pas. J'ai essayé de remplacer countblank par cellule.value=0>1 mais ca ne marche pas. Un message d'erreur me demande une fin d'instruction et je ne sais pas pourquoi...
 
Re : Macro pour cacher colonnes vides

Pour masquer une colonne selon une condition
il faut que toutes les cellules de cette colonne remplissent cette condition.

Donc ton cas, on masquera une colonne si toutes ses cellules renvoient 0.

Est-ce le cas ton fichier ?

As-tu une une colonne pleine de 65536 zéros à masquer ?

Cette macro fonctionne (si les conditions précitées sont réunies)
Code:
Sub masquercolonnesvidesV3() ' valable pour les versions inférieures à Excel 2007
Dim i
Application.ScreenUpdating = False
For i = 1 To 256
Columns(i).Hidden = Application.CountBlank(Columns(i)) = 65536
Columns(i).Hidden = Application.CountIf(Columns(i), 0) = 65536
Next i
End Sub
 
Dernière édition:
Re : Macro pour cacher colonnes vides

Cette variante masquera toutes les colonnes vides et les colonnes contenant au mois un zéro.

Code:
Sub masquercolonnesvidesV4() ' valable pour les versions inférieures à Excel 2007
Dim i
Application.ScreenUpdating = False
For i = 1 To 256
Columns(i).Hidden = Application.CountBlank(Columns(i)) = 65536
Columns(i).Hidden = Application.CountIf(Columns(i), 0) > 0
Next i
End Sub
 
Re : Macro pour cacher colonnes vides

Malheureusement non.... Tanpis je crois que je vais modifier ma formule. Ca ne va pas etre facile car je ne peux pas en corriger une seule puis etirer, mais au moins je pourrais utiliser la macro précédente.
Merci beaucoup pour votre aide 🙂
 
Re : Macro pour cacher colonnes vides

Changer ta formule ne changera rien à l'affaire.


Masquer une colonne c'est masquer 65536 cellules d'un coup.
et masquer une ligne c'est masquer 256 cellules d'un coup.


Tu ne veux pas voir de zéros tu peux décocher Valeurs zéros dans les options d'Excel.
Menu: Outils
Menu: Options ; Onglet: Affichage : décocher Valeurs zéros.
 
Dernière édition:
- 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
8
Affichages
763
Réponses
2
Affichages
1 K
C
Réponses
1
Affichages
732
F
  • Question Question
Réponses
1
Affichages
1 K
Z
Réponses
3
Affichages
1 K
Z
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…