[MACRO] Cacher des colonnes si la somme d'une plage est vide

GuizmoD

XLDnaute Nouveau
Bonjour à tous,

Voici mon premier poste mais surement pas le dernier.

J'espère que je saurai m'expliquer clairement pour ma première demande.

J'ai un fichier sur lequel je souhaite cacher les colonnes d'une plage si la somme de la colonne (dans la plage) est vide.

Voici ce que j'ai tenté de faire :

Code:
Sub masquercolonne()
Dim K As Long ' numéro de la colonne

For K = 4 To 33 Step -1 'Pour chaque colonne dans la plage "D10:AG1170" si la somme de la colonne = 0 alors on cache la colonne.
     If Evaluate("=SUBTOTAL(3," & Range(Cells(10, K), Cells(1170, K)).Address & ")") = 0 Then
        Columns(K).Hidden = True
     End If

Next K

End Sub

[CODE]

Je sais qu'il serait plus simple pour vous si je mets le fichier en question en ligne mais malheureusement je ne peux pas.

Merci d'avance pour votre aide.

GuizmoD
 
G

Guest

Guest
Re : [MACRO] Cacher des colonnes si la somme d'une plage est vide

Bonjour et bienvenue,


Je sais qu'il serait plus simple pour vous si je mets le fichier en question en ligne mais malheureusement je ne peux pas.

Ce n'est pas le fichier original qui est demandé, mais un fichier exemple expurgé des données sensibles et personnelle, qui reproduise le problème.

Mais comme tu es nouveau voici ta macro corrigée, à l'arrache.

Si tu veux aller de la colonne 33 à la 4 c'est : For K = 33 to 4 Step -1 et non pas K=4 to 33 Step -1.

De plus Sub.total(9,...) pour la somme

Code:
Sub masquercolonne()
Dim K As Long ' numéro de la colonne
For K = 33 To 4 Step -1 'Pour chaque colonne dans la plage "D10:AG1170" si la somme de la colonne = 0 alors on cache la colonne.
Columns(K).Hidden = Evaluate("=SUBTOTAL(9," & Range(Cells(10, K), Cells(1170, K)).Address & ")")=0

Next K
End Sub

A+
 

GuizmoD

XLDnaute Nouveau
Re : [MACRO] Cacher des colonnes si la somme d'une plage est vide

Merci pour ta réponse Hasco ça fonctionne!

Ça fait plaisir de voir que je n’étais pas trop loin.

Du coup j'en profite pour continuer ma demande car ma mise en forme automatique n'est pas terminée.

Je voudrais maintenant effectuer la même opération mais pour les lignes. La plage est exactement la même mais il faut seulement rajouter un critère : la colonne doit être cacher si sa somme fait 0 mais également à condition que dans la colonne A il n'y ait rien d'affiché.

Dans le fichier exemple ci-joint il faudrait donc que les lignes en jaune soient caché mais pas les autres.
 

Pièces jointes

  • Exemple macro.xls
    33.5 KB · Affichages: 39
  • Exemple macro.xls
    33.5 KB · Affichages: 48
  • Exemple macro.xls
    33.5 KB · Affichages: 41
G

Guest

Guest
Re : [MACRO] Cacher des colonnes si la somme d'une plage est vide

Bonjour,

Tout d'abord ta macro 'masquercolonnes' peut s'écrire comme ceci:
Code:
Sub masquercolonne()
Dim K As Long ' numéro de la ligne
For K = 22 To 4 Step -1 'Pour chaque ligne dans la plage "D10:AG1170" si la somme de la colonne = 0 alors on cache la colonne.
    Rows(K).Hidden = Evaluate("=SUBTOTAL(9," & Range(Cells(K, 3), Cells(K, 22)).Address & ")") = 0 And Cells(K, 1) = ""
Next K
End Sub

Ensuite, peut-être n'as tu pas bien compris l'esprit du forum, qui est basé sur le partage et l'apprentissage par la pratique. Dans ton exemple, il n'y a pas un début de tentative pour répondre à ta deuxième interrogation qui concerne le masquage des Lignes. Il ne suffit pas ici, en tout cas pour moi, de demander pour que les choses arrivent toutes cuites.

A+
 

GuizmoD

XLDnaute Nouveau
Re : [MACRO] Cacher des colonnes si la somme d'une plage est vide

Bonjour,

J'ai bien essayé quelque chose en effet mais je pensais être loin de la bonne réponse mais je ne l'étais pas finalement j'avais essayé avec la fonction if mais je n'arrivais pas à placer le "and" pour la deuxième condition mais je vois que je m'étais fait des nœuds au cerveau pour rien.

Mais en effet le but est d'apprendre je l'avais bien compris et c'est bien mon objectif.

Merci pour ton rappel et ta réponse.

GuizmoD
 

Discussions similaires

Réponses
3
Affichages
320

Statistiques des forums

Discussions
312 500
Messages
2 089 005
Membres
104 003
dernier inscrit
adyady__