Masquer lignes d'un tableau en fonction de valeurs

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 !

Bougla972

XLDnaute Occasionnel
Bonsoir à toutes et à tous,

Je cherche à masquer les lignes d'un tableau ou figure des valeurs en colonne A, colonne B et C figurent des données. J'ai crée des listes avec les valeurs à trier dans le tableau.

Je joins le fichier, cela sera certainement plus parlant...

Merci d'avance pour votre aide
 

Pièces jointes

Re : Masquer lignes d'un tableau en fonction de valeurs

Bonjour Hypo78, dra72

Chaque valeur en colonne A correspond à un corps de métier que j'ai nommé "MétierRetraite", "MétierPrev",etc...ces données figurent en Feuil2.
Je souhaite donc afficher les les lignes du tableau en Feuil1 ou figurent les valeurs de "MétierRetraite" par ex et masquer les lignes ne figurant pas dans ces critères.

A votre disposition pour + d'infos
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Bonjour et désolé pour le retard.

Tu peux essayer ceci comme macro:
Code:
Sub MasqueLignes()

Dim R As Range
Dim R1 As Range
Dim R2 As Range

Set R = Sheets("Feuil1").Range("A7:A37")
Set R2 = Sheets("Feuil2").Range("A2:A21")

For Each R1 In R
  If R2.Find(What:=R1, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then
    R1.EntireRow.Hidden = True
  Else
    R1.EntireRow.Hidden = False
  End If
Next

End Sub

Reste à voir (éventuellement) si tu veux mettre à jour ta ligne total en fonction des lignes affichées.

Bonne soirée.
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Bonsoir Dra72,

Merci beaucoup pour ces quelques lignes de code...elle marche nique !
Pour la ligne Total, je gère avec la fonction "classique" sous-total, pas de souci pour ça.

Simplement je souhaiterai que la variable "R2" considère toutes les occurences de la colonne "A","Feuil2"; à savoir avec la propriété "End(xldown)...mais en vain.

Merci encore pour ta patience
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Bonsoir Bougla972,

Pour prendre en compte toute ta colonne A de ta feuil2:

Code:
Sub MasqueLignes()

Dim R As Range
Dim R1 As Range
Dim R2 As Range

Set R = Sheets("Feuil1").Range("A7:A37")
With Sheets("Feuil2")
  Set R2 = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
End With

For Each R1 In R
  If R2.Find(What:=R1, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then
    R1.EntireRow.Hidden = True
  Else
    R1.EntireRow.Hidden = False
  End If
Next

End Sub

A+
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Je te conseillerais plutôt ceci:

Code:
With Sheets("Feuil1")
  .Range("B38") = Application.WorksheetFunction.Subtotal(109, .Range("B7:B37"))
  .Range("C38") = Application.WorksheetFunction.Subtotal(109, .Range("C7:C37"))
End With

à placer à la fin de la procédure MasqueLignes() ce qui permettra de mettre à jour le sous total automatiquement aprés chaque intervention.

Si tu tu utilises la fonction Excel SOUS.TOTAL, le calcul ne se refera pas automatiquement.
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Bonjour,

Je remarque (miraculeusement) ce matin que la fonction Excel SOUS.TOTAL fonctionne correctement. J'étais persuadé du contraire pensant qu'il fallait modifier la valeur d'une cellule pour qu'elle se mette à jour. A priori, tu as essayé et tu es arrivé au même constat d'échec.

Bizarre, bizarre.

Essaie à nouveau de ton côté.
Si c'est OK, je te conseille plutôt d'utiliser SOUS.TOTAL, la formule que je te proposais hier était incomplète. (pas de mise à jour du total en cas de modif des cellules B7:C37). Il aurait fallu ajouter le recalcul dans la procédure Worksheet_Change.

Plus simple donc avec SOUS.TOTAL.

A+
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Bonjour dra,

C'est vraiment bizarre, il m'a semblé que la formule SOUS.TOTAL avait fonctionné...mais après plusieurs tentatives ce n'est pas le cas. Donc formule vba plus efficace.

Effectivement, en cas d'ajout de ligne dans le tableau, je dois changer le code. Faut il créer une variable reprenant les critères de range("A7:A37") dans worsheet_change ?

A+
 
Re : Masquer lignes d'un tableau en fonction de valeurs

Voilà ma nouvelle proposition:

Regarde la pièce jointe EssaiTriMétier.xlsm

Ceci devrait te permettre d'ajouter et de retirer des lignes à volonté dans Feuil1.

J'ai ajouté 2 boutons pour masquer les lignes et pour réafficher.

A+
 

Pièces jointes

- 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

Discussions similaires

Réponses
14
Affichages
497
Réponses
6
Affichages
295
Retour