Macro : Masqué colonne si plage de la colonne vide

Piro

XLDnaute Nouveau
Bonjour !

J'ai trouvé sur autre fil un bout de la macro, mais il me manque l'essentiel :

Je veux masquer les colonnes dont les celulles 8 à 460 sont vide après avoir appliqué un filtre.

Sub masquer()
???
Selection.EntireColumn.Hidden = True
End sub

Est-ce que quelqu'un à une suggestion ?
Merci d'avance
 

GIBI

XLDnaute Impliqué
Re : Macro : Masqué colonne si plage de la colonne vide

Bonsoir,

utilise la fonction sous.total


Code:
 If Evaluate("=SUBTOTAL(3," & Range(Cells(8, c), Cells(460, c)).Address & ")") = 0 then
    Columns(c).Hidden = True

 endif

avec c= le numéro de la colonne

GIBI
 

Piro

XLDnaute Nouveau
Re : Macro : Masqué colonne si plage de la colonne vide

J'essai ceci et j'ai un erreur 1004 ?

Sub masquer()
If Evaluate("=SUBTOTAL(3," & Range(Cells(8, k), Cells(460, k)).Address & ")") = 0 Then
Columns(k).Hidden = True
End If
End Sub

Est-ce que je devrai créer un "If" pour chaque colonne ? Dans mon cas, ce sera de "J" à "EQ" et ça grossit constamment.

Merci Gibi
 

GIBI

XLDnaute Impliqué
Re : Macro : Masqué colonne si plage de la colonne vide

Bonsoir,

Ta question me laisse perplexe. J'espère que ta macro ne se réduit pas à ton exemple, car il faut donner une valeur à la variable k (dans ton cas) = traiter chaque colonne.

Remarque : lorsque tu supprime des lignes ou des colonne il faut partir de la fin.

Sans autres explication je ne peux pas paramétrer la valeur de la dernière colonne.


Code:
Dim K As Long ' numéro de la colonne
For K = 147 To 10  Step -1      ' j est l colonne 10 EQ la 147
     If Evaluate("=SUBTOTAL(3," & Range(Cells(8, K), Cells(460, K)).Address & ")") = 0 Then
        Columns(K).Hidden = True
     End If

Next c


GIBI

PS : si tu as un Pb joint le classeur
 

Piro

XLDnaute Nouveau
Re : Macro : Masqué colonne si plage de la colonne vide

Tu a raison, j'aurais du joindre le classeur. En fait je croyais que c'était plus simple puisque j'ai vu plusieurs discussions portant sur "masqué automatique".

Voici un fichier similaire et j'y ai mis des explications

Merci de l'aide
 

GIBI

XLDnaute Impliqué
Re : Macro : Masqué colonne si plage de la colonne vide

Bonjour

Pas clair et surtout contradictoire avec les messages précédents.

Donc si, après avoir appliqué un filtre, tu veux cacher les colonnes de I à la dernière colonne si elles sont entièrement vide, prend ce code

Code:
Sub masquer()
Dim K As Long ' numéro de la colonne
Dim NbrCol As Long, Nbrlig As Long

NbrCol = Range("IV7").End(xlToLeft).Column ' numéro de dernière colonne
Nbrlig = Range("G65536").End(xlUp).Row      ' numéro de dernière ligne du tableau

For K = NbrCol To 9 Step -1       ' I est l colonne 10 EQ la 147
     If Evaluate("=SUBTOTAL(3," & Range(Cells(8, K), Cells(Nbrlig, K)).Address & ")") = 0 Then
        Columns(K).Hidden = True
     End If

Next K

End Sub


Remarques :

je repère la dernière ligne en me basant sur la colonne "G" ==> Ne rien mettre après la fin de ton tableau dans cette colonne

La première colonne à cacher est "I" soit la 9eme, comme dans ton exemple

S'il y a un filtre seules les lignes visibles sont prise en comptes pour le comptage



GIBI

GIBI
 

Piro

XLDnaute Nouveau
Re : Macro : Masqué colonne si plage de la colonne vide

Je suis complètement mystifié ! Tout marche parfaitement dans le document « modèle », (et je je trip vraiment de voir ça, merci !!!) mais dans le document original, la macro masque plusieurs colonnes, mais en laisse d’autres sans que j’arrive à identifier la logique. Je sélectionne les cellules (même si elles sont déjà vides) supprime leur contenu, rapplique la macro et la colonne reste affichée…

Bravo pour ta macro, elle est super efficace. J’apprécierais si tu peux encore m’orienter sur des pistes de solutions ?
 

Piro

XLDnaute Nouveau
Re : Macro : Masqué colonne si plage de la colonne vide

J'ai trouvé mon erreur : J'ai une série d'employé non-actif à partir de la ligne 500.

J'ai donc changé :
Nbrlig = Range("G65536").End(xlUp).Row
Pour
Nbrlig = Range("G460").Row

et ça marche parfaitement !!!

Je suis foule content, merci beaucoup. Surtout que dans la macro que tu m'a crée tu précisais "numéro de dernière ligne du tableau" Ce qui m'a vraiment orienté.

Merci encore

J'adore ce forum !
 

Discussions similaires

Réponses
7
Affichages
550

Statistiques des forums

Discussions
312 330
Messages
2 087 346
Membres
103 525
dernier inscrit
gbaipc