XL 2016 Afficher entête des lignes suite à un filtrage

Stéfane

XLDnaute Occasionnel
Bonjour le forum,

J'ai un tableau qui me permet de filtrer les cases ayant une valeur de 0,00%
J'ai une macro me permettant de supprimer les entête des lignes (Toutes les entêtes des cases des valeurs = 0,00%), car le tableau en comporte beaucoup et cela m'obligerais à les masquer une par une, donc pas pratique.....
Cependant je souhaite pouvoir réafficher celles des articles dont la valeur est différente de 0,00%.
J'essais en mettant des "0" dans une case annexe pour trouver une solution mais en vain pour le moment.
Je joints un tableau en exemple avec les macros dont je parle.

Merci pour votre aide.
 

Pièces jointes

  • Test Tableau.xlsm
    22.3 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
@Marcel, vous devez êtes fin psychologue pour avoir compris ça de ce qui précède.😂
Un essai en PJ :
1- Dans toutes les cases vides de I, si un nombre en dessous est >0 jusqu'au prochain bloc, alors je met un point.
2- Je filtre ensuite si valeurs>0 OU valeur="."
3- Je supprime les points.
NB: Petit piège. Dans la PJ initiale les cellules "vides" contiennent un espace. :)
 

Pièces jointes

  • Test Tableau (3).xlsm
    23 KB · Affichages: 5
Dernière édition:

Stéfane

XLDnaute Occasionnel
Il me semble qu'il y a, quand on affiche un onglet, une macro qui masque toutes les lignes d'en-tête de "sous-tableau". (ne me demande pas pourquoi... je n'en sais rien du tout 😁)

En suite, doivent s'afficher toutes les lignes dont le pourcentage n'est pas nul, et aussi les en-têtes correspondants, et uniquement ceux correspondant.
Autrement dit, les en-têtes des "sous-tableaux" dont tous les pourcentages sont nuls doivent rester masqués.

Du moins c'est ce que j'ai compris et essayé de faire dans mon dernier fichier.



#19 😉
Bonjour Marcel32 et Sylvanu
Oui effectivement la macro masque toutes mes lignes 0,00% (sauf les entêtes de ces lignes) car le tableau fait 1500 lignes.
Il est "relié" à une autre feuille de mon classeur dans laquelle je rentre des remises.
De cette façon, lorsque je rentre une remise cela me permet (sur ce tableau) d'afficher les lignes qui sont concernées, plutôt que de devoir masquer toutes les lignes qui ne le sont pas (0,00%).
Cependant cette macro ne masque pas les entêtes de ces lignes car lorsque je filtre ce sont uniquement le 0,00% qui se masquent.

J'ai trouvé un début de réponse avec cette macro qui me permet de donner la valeur d'une série de lignes à mon entête et ainsi, si toute les lignes de cette série on une valeur de 0,00%, le filtre masque les lignes et
et les entêtes, mais cela reste laborieux à réaliser car beaucoup d'entêtes. et de sériés de lignes
Je dois donc réaliser cette opération à chaque groupe de lignes.

Pour les entêtes
Range("T41").FormulaR1C1 = "=SUM(R[3]C[-2]:R[5]C[-2])"
Range("T42").FormulaR1C1 = "=SUM(R[2]C[-2]:R[4]C[-2])"
Range("T43").FormulaR1C1 = "=SUM(R[1]C[-2]:R[3]C[-2])"
Pour les lignes
Range("T44").FormulaR1C1 = "=RC[-2]"
Range("T44").AutoFill Destination:=Range("T44:T46"), Type:=xlFillDefault

Je suis donc à a recherche d'une solution qui me permettrait de réaliser cela beaucoup plus rapidement.

Ps Sylvanu : Je peux peut tout à fait comprendre que mes explication soient confuses car mon tableau fonctionne en fait dans l'autre sens (Toutes les lignes 0,00% sont masquées pour ne démasquer que celles qui ont un % positif). Je comprend tout à fait ta logique : on met "F" devants les entêtes et on filtre les 0,00% et les "F" et le tour est joué.
Dans mon cas cela est plus complexe car certaines entêtes sont à masquée mais pas d'autres : en clair 0,00% on masque l'entête mais si 50% on ne masque pas les entêtes or si je met des "F" à toutes les entêtes, celles-ci se masquent toutes y compris celles ou j'ai 50%.
Il me faut donc trouver une solution pour laisser certaines entête. Celle que j'envisage est de leur donner une valeur 0,00% ou 50% et de ce faite de les masquer en fonction du résultat.
C'est pour cela que cette solution d'affecter une valeur fonctionne mais laborieuse à mettre en place (Environ 600 entêtes).

Merci à vous.
 

Stéfane

XLDnaute Occasionnel
Bonjour Marcel32 et Sylvanu
Oui effectivement la macro masque toutes mes lignes 0,00% (sauf les entêtes de ces lignes) car le tableau fait 1500 lignes.
Il est "relié" à une autre feuille de mon classeur dans laquelle je rentre des remises.
De cette façon, lorsque je rentre une remise cela me permet (sur ce tableau) d'afficher les lignes qui sont concernées, plutôt que de devoir masquer toutes les lignes qui ne le sont pas (0,00%).
Cependant cette macro ne masque pas les entêtes de ces lignes car lorsque je filtre ce sont uniquement le 0,00% qui se masquent.

J'ai trouvé un début de réponse avec cette macro qui me permet de donner la valeur d'une série de lignes à mon entête et ainsi, si toute les lignes de cette série on une valeur de 0,00%, le filtre masque les lignes et
et les entêtes, mais cela reste laborieux à réaliser car beaucoup d'entêtes. et de sériés de lignes
Je dois donc réaliser cette opération à chaque groupe de lignes.

Pour les entêtes
Range("T41").FormulaR1C1 = "=SUM(R[3]C[-2]:R[5]C[-2])"
Range("T42").FormulaR1C1 = "=SUM(R[2]C[-2]:R[4]C[-2])"
Range("T43").FormulaR1C1 = "=SUM(R[1]C[-2]:R[3]C[-2])"
Pour les lignes
Range("T44").FormulaR1C1 = "=RC[-2]"
Range("T44").AutoFill Destination:=Range("T44:T46"), Type:=xlFillDefault

Je suis donc à a recherche d'une solution qui me permettrait de réaliser cela beaucoup plus rapidement.

Ps Sylvanu : Je peux peut tout à fait comprendre que mes explication soient confuses car mon tableau fonctionne en fait dans l'autre sens (Toutes les lignes 0,00% sont masquées pour ne démasquer que celles qui ont un % positif). Je comprend tout à fait ta logique : on met "F" devants les entêtes et on filtre les 0,00% et les "F" et le tour est joué.
Dans mon cas cela est plus complexe car certaines entêtes sont à masquée mais pas d'autres : en clair 0,00% on masque l'entête mais si 50% on ne masque pas les entêtes or si je met des "F" à toutes les entêtes, celles-ci se masquent toutes y compris celles ou j'ai 50%.
Il me faut donc trouver une solution pour laisser certaines entête. Celle que j'envisage est de leur donner une valeur 0,00% ou 50% et de ce faite de les masquer en fonction du résultat.
C'est pour cela que cette solution d'affecter une valeur fonctionne mais laborieuse à mettre en place (Environ 600 entêtes).

Merci à vous.
Si cela peut me permettre d'être plus clair :
Je voudrait "dire" à mon entête : si toutes les valeurs de ton groupe de cases = 0,00% masque toi.
Si une ou plusieurs valeurs de tes cases > à 0,00% ne te masque pas (pas de nombre négatif à prévoir).
Cela groupe de lignes par groupe de lignes.
Ce que fais comme je le disais cette macro, mais du coup il faut que je reproduise ce schéma pour chaque groupe = très long à faire. D'où ma recherche d'une solution moins lourde à mettre en place.

Merci à vous.
 

TooFatBoy

XLDnaute Barbatruc
Que tu mettes la somme ou le nombre de lignes différentes de 0,00 %, dans tes en-têtes, cela ne change rien au fonctionnement qui reste identique.

D'après ce que tu nous dis maintenant, tu sembles avoir 3 lignes d'en-tête et non plus 2 ?!? 🤔

Si tu avais donnés ton vrai fichier anonymisé, ou au moins un extrait, je pense que ton problème serait réglé depuis le premier jour. ;)
 

TooFatBoy

XLDnaute Barbatruc
Je voudrait "dire" à mon entête : si toutes les valeurs de ton groupe de cases = 0,00% masque toi.
Si une ou plusieurs valeurs de tes cases > à 0,00% ne te masque pas (pas de nombre négatif à prévoir).
Cela groupe de lignes par groupe de lignes.
C'est aussi ce que j'ai essayé de faire avec ma formule (qui peut être inscrite par macro).

Et c'est aussi ce que fait la macro de Sylvanu en #31, à ceci près qu'au lieu d'être une formule c'est une valeur, inscrite en dur puis effacée, par la macro qu'il faut donc relancer à chaque modification de pourcentage, mais qui fonctionne parfaitement bien.
 
Dernière édition:

Stéfane

XLDnaute Occasionnel
C'est aussi ce que j'ai essayé de faire avec ma formule (qui peut être inscrite par macro).

Et c'est aussi ce que fait la macro de Sylvanu en #31, à ceci près qu'au lieu d'être une formule c'est une valeur, inscrite en dur puis effacée, par la macro qu'il faut donc relancer à chaque modification de pourcentage, mais qui fonctionne parfaitement bien.
Voici un tableau, qui est plus proche de ma recherche.
Avec les macro dont je parlais tout à l'heure , il fonctionne très bien.
Juste une volonté de simplifier la mise en œuvre, car il s'agit là d'un exemple de quelques quelques lignes.
Lorsqu'il s'agit de faire cela sur un tableau de 3000 lignes.......
Dans la macro, j'ai mis pourquoi il fonctionne dans l'autre sens (macro ThisWorkbook)
Merci.
 

Pièces jointes

  • TEST.xlsm
    33.1 KB · Affichages: 3

TooFatBoy

XLDnaute Barbatruc
Et avec ton fichier, ça donnerait ça, mais toujours sans fonctionnement à l'envers. :(

/!\ J'ai ajouté une petite MFC qui hachure en rouge les lignes qui seront masquées... /!\
 

Pièces jointes

  • TEST.xlsm
    35 KB · Affichages: 0
Dernière édition:

Stéfane

XLDnaute Occasionnel
Et avec ton fichier, ça donnerait ça, mais toujours sans fonctionnement à l'envers. :(

/!\ J'ai ajouté une petite MFC qui hachure en rouge les lignes qui seront masquées... /!\
Re Bonjour Marcel32,

Votre macro est vraiment magique!!! merci beaucoup. Elle arrive a compter pour chaque groupe a inscrire la somme automatiquement....TOP.
Il y a juste, je ne pensais pas que cela était important un petit % qu'elle recopie à la place d'un 0, du coup la 3ème ligne ne se masque pas. Les 2 autres impeccable.
J'ai mis ce petit % dans le fichier joint pour voir si il était possible d'y remédier.
Bizarrement sur d'autre entête (comme dans le fichier) les désignations ne posent pas de problème mais ce symbole est bloquant.

Merci encore....
 

Pièces jointes

  • TEST.xlsm
    34.9 KB · Affichages: 1

Stéfane

XLDnaute Occasionnel
Pas facile de comprendre ce que tu écris et de suivre ta pensée ! :(
Voici tout de même une nouvelle version, faite un peu au pif du coup...
Merci beaucoup Marcel32, votre macro fonctionne vraiment très bien!! 👍👍, j'essais de comprendre comment elle repère les entête pour inclure la formule "somme" mas je suis loin d'avoir votre niveau.
J'ai juste ajouter un second signe à exclure pour que toutes les lignes se masquent.
Des entêtes en cachant d'autres je voulait savoir quel ligne je devais modifier pour que mes entête principales se masques et démasque de la même façon.
Ces macro me permettent de faire la somme en "R" comme pour les autres à la différence que leur somme correspond à l'addition de plusieurs groupe.
Je n'en avait pas parlé mais au dessus de ces 3 entêtes j'en ai une 4ème sur ces lignes.
Promis après il n'y a plus d'entêtes!!!
Range("T25").FormulaR1C1 = "=SUM(R[1]C:R[137]C)"
Range("T163").FormulaR1C1 = "=SUM(R[1]C:R[100]C)"
Range("T264").FormulaR1C1 = "=SUM(R[1]C:R[47]C)"
Range("T312").FormulaR1C1 = "=SUM(R[1]C:R[109]C)"
Range("T422").FormulaR1C1 = "=SUM(R[1]C:R[91]C)"
Range("T514").FormulaR1C1 = "=SUM(R[1]C:R[84]C)"
Range("T599").FormulaR1C1 = "=SUM(R[1]C:R[85]C)"
Range("T685").FormulaR1C1 = "=SUM(R[1]C:R[137]C)"
Range("T823").FormulaR1C1 = "=SUM(R[1]C:R[125]C)"
Range("T949").FormulaR1C1 = "=SUM(R[1]C:R[91]C)"
Range("T1041").FormulaR1C1 = "=SUM(R[1]C:R[65]C)"
Range("T1107").FormulaR1C1 = "=SUM(R[1]C:R[67]C)"
Range("T1175").FormulaR1C1 = "=SUM(R[1]C:R[120]C)"
Range("T1296").FormulaR1C1 = "=SUM(R[1]C:R[98]C)"
Range("T1395").FormulaR1C1 = "=SUM(R[1]C:R[42]C)"
Encore vraiment merci !!
 

TooFatBoy

XLDnaute Barbatruc
J'ai juste ajouté un second signe à exclure pour que toutes les lignes se masquent.
Pas compris.


Des en-têtes en cachant d'autres, je voulais savoir quelle ligne je devais modifier pour que mes en-tête principaux se masquent et démasquent de la même façon.
Pas compris.


Ces macros me permettent de faire la somme en "R" comme pour les autres, à la différence que leur somme correspond à l'addition de plusieurs groupes.
Pas compris.


Je n'en avais pas parlé mais au-dessus de ces 3 en-têtes j'en ai un 4ème sur ces lignes.
Pas compris.
 

Stéfane

XLDnaute Occasionnel
Pas compris.



Pas compris.



Pas compris.



Pas compris.
Pour le signe ajouter, j'ai remis 1 : Or .Range(ColDeb & LigEnCours) = "-" Then en plus.
Pour les entêtes j'ai complété le tableau par des "entêtes de groupe" pour que cela soit plus clair.
Je pensais qu'en modifiant les "Offset" je pourrais les inclure et faire en sorte qu'ils puisse aussi se démasquer lorsque une des valeurs du groupe >0.
Les macro du post précédent permettent de la même façon d'additionner, cette fois ci, tout le groupe.
Exemple 1 groupe = une dizaines de ligne + les 3 entêtes que masque et démasque votre macro.
1 entête de groupe= une cinquantaine de lignes + 15 entêtes, donc contient plusieurs groupes
J'éspère être plus clair avec ces explications.
Encore merci pour votre aide.
 

Pièces jointes

  • TEST-2.xlsm
    39.8 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 889
Membres
103 019
dernier inscrit
Eliot_1