Masquer des colonnes selon leur remplissage une fois trie

drouch

XLDnaute Nouveau
Bonjour,
Je vais tenter de m expliquer, mais ca va peut etre pas etre tres clair;
Je souhaiterai faire une macro qui va me masquer les colonnes qui n ont que des 0, mais cela doit etre valable une fois trié, c est a dire que si je tri avec "b" et qu il n ya que des 0, et meme si la colonne comprend des 1 en a, elle est masquée. Je pensai rajouté une case "=somme()" sous chaque colonne afin ensuite de balayer ces cases est de masquer lorsque c est egale a 0 mais ca ne prend pas en compte le tri du coup.
Sinon je pensais a deux macro, une pour a et une pour b, qui pour chaque colonne irai regarder la colonne "reference" et si c est a, par exemple, elle additionne la case de la colonne dans une variable style c=c+(case) est a la fin si on a 0 elle masque et passe a la colonne d apres. Mais ca je ne sais pas le faire en VBA.
J espere avoir etait clair.
Je vous remercie d avance de l attention que vous y porterez et je suis bien sure ouvert a toute proposition auquel je n aurai pas pensé.
Un fichier d exemple est joint
 

Pièces jointes

  • exempleking.xlsm
    13.9 KB · Affichages: 53
  • exempleking.xlsm
    13.9 KB · Affichages: 55
  • exempleking.xlsm
    13.9 KB · Affichages: 50

Gorfael

XLDnaute Barbatruc
Re : Masquer des colonnes selon leur remplissage une fois trie

Salut drouch et le forum
Effectivement, ce n'est pas très clair
Je souhaiterai faire une macro qui va me masquer les colonnes qui n ont que des 0, mais cela doit etre valable une fois trié
Je suppose que par "trié", tu entends "filtré" ?
Si c'est bien ça, au lieu de faire une somme(), regarde plutôt dans Sous.total(109; plage)
A+
 

drouch

XLDnaute Nouveau
Re : Masquer des colonnes selon leur remplissage une fois trie

c etait sure que j allais pas etre tres clair, desole. Mais je crois que j ai reussi ,je suis assez fier d'ailleurs ^^ voila ma solution si ca peut arranger quelqun qui un jour se posera la meme question a condition de l avoir compris ;)
"Sub essai()
c = 3
b = 2
Sheets("Feuil2").Cells.Item([2], c).Select
Do Until ActiveCell.Value = ""

a = 0

Do Until ActiveCell.Value = ""
d = ActiveCell.Value

If Cells.Item(b, [2]) = "b" Then
a = a + d
End If
b = b + 1
Sheets("Feuil2").Cells.Item(b, c).Select
Loop
If a = 0 Then
Columns(c).Select
Selection.EntireColumn.Hidden = True
End If
b = 2
c = c + 1
Sheets("Feuil2").Cells.Item(b, c).Select
Loop


End Sub"
je fais ca pour les deux cas
en tout cas merci a ceux qui s y sont penché ou qui s y penchent
 

Discussions similaires