Microsoft 365 Filtrer des lignes en fonction d'une valeur spécifiée

ShrekL

XLDnaute Junior
Bonjour,

J'ai tenté de trouver l'équivalent de ce que je voulais faire mais je n'ai pas trouvé exactement ce que je cherchais.

Vous trouverez ci-joint mon fichier test.

J'aimerais filtrer automatiquement les lignes dans les sections 1 à 3 en fonction de la valeur entrée dans la cellule C1.

Naturellement, je veux que les lignes titre, les sous-totaux et les lignes libres reste toujours affichées.

J'aimerais aussi que lorsque j'indique la valeur 0, les lignes s'affichent toutes.

Avez-vous une solution?

Merci beaucoup à l'avance et salutations,
 

Pièces jointes

  • test mask bordereau.xlsx
    11.2 KB · Affichages: 7
Solution
Merci beaucoup phil69970 et cp4 pour votre aide.

Je me rend compte que ma question n'était peut-être pas 100% claire mais la fonction de cp4, est celle qui s'approche le plus de ce que je voudrais mais elle fait tout juste le contraire ce que je veux réellement. J'aimerais que seule les lignes portant le no de bordereau indiquée en C1 restent affichées et non pas l'inverse.

Pour se faire, j'ai créé des plages nommées par section. J'ai tenté de faire masquer les lignes qui ne porte pas le numéro de bordereau dans les plages nommées mais ça ne fonctionne pas tout à fait.

Voir le nouveau fichier joint.

Merci encore de votre aide
Re,
Je ne sais pas si j'ai bien compris, code ci-dessous à tester
VB:
Sub Masquer()
'% ==> as integer...

cp4

XLDnaute Barbatruc
Bonjour @ShrekL :), @Phil69970 ;),

D'après moi et remodelant le code de Phil (remplacer par la procédure ci-dessous)
VB:
Sub Masquer()
'% ==> as integer - '& ==> as long - '@ ==> as currency
'! ==> as single - '# ==> as double - '$ ==> as string
Dim Derlig&
Derlig = ActiveSheet.UsedRange.Rows.Count
For i = 1 To Derlig
If Cells(i, 1) = [C1].Value Then Rows(i).Hidden = True
Next i
End Sub
 

chris

XLDnaute Barbatruc
Bonjour

Je trouve dommage que, pour un simple filtrage, fonctionnalité des plus basiques d'Excel, le tableau ne respectant pas les règles de normalisation, on soit obligé de coder en VBA...

Pourquoi pas tout simplement un tableau normalisé et un couple TCD-Segment ?
 

Pièces jointes

  • test mask bordereau.xlsx
    20.2 KB · Affichages: 7

ShrekL

XLDnaute Junior
Bonjour @ShrekL :), @Phil69970 ;),

D'après moi et remodelant le code de Phil (remplacer par la procédure ci-dessous)
VB:
Sub Masquer()
'% ==> as integer - '& ==> as long - '@ ==> as currency
'! ==> as single - '# ==> as double - '$ ==> as string
Dim Derlig&
Derlig = ActiveSheet.UsedRange.Rows.Count
For i = 1 To Derlig
If Cells(i, 1) = [C1].Value Then Rows(i).Hidden = True
Next i
End Sub
Merci beaucoup phil69970 et cp4 pour votre aide.

Je me rend compte que ma question n'était peut-être pas 100% claire mais la fonction de cp4, est celle qui s'approche le plus de ce que je voudrais mais elle fait tout juste le contraire ce que je veux réellement. J'aimerais que seule les lignes portant le no de bordereau indiquée en C1 restent affichées et non pas l'inverse.

Pour se faire, j'ai créé des plages nommées par section. J'ai tenté de faire masquer les lignes qui ne porte pas le numéro de bordereau dans les plages nommées mais ça ne fonctionne pas tout à fait.

Voir le nouveau fichier joint.

Merci encore de votre aide
 

Pièces jointes

  • Masquer des zones V1_modif.xlsm
    23.1 KB · Affichages: 4

cp4

XLDnaute Barbatruc
Merci beaucoup phil69970 et cp4 pour votre aide.

Je me rend compte que ma question n'était peut-être pas 100% claire mais la fonction de cp4, est celle qui s'approche le plus de ce que je voudrais mais elle fait tout juste le contraire ce que je veux réellement. J'aimerais que seule les lignes portant le no de bordereau indiquée en C1 restent affichées et non pas l'inverse.

Pour se faire, j'ai créé des plages nommées par section. J'ai tenté de faire masquer les lignes qui ne porte pas le numéro de bordereau dans les plages nommées mais ça ne fonctionne pas tout à fait.

Voir le nouveau fichier joint.

Merci encore de votre aide
Re,
Je ne sais pas si j'ai bien compris, code ci-dessous à tester
VB:
Sub Masquer()
'% ==> as integer - '& ==> as long - '@ ==> as currency
'! ==> as single - '# ==> as double - '$ ==> as string
    Dim Derlig&
    Derlig = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To Derlig
        'If Cells(i, 1) <> [C1].Value Then Rows(i).Hidden = True
        If IsNumeric(Cells(i, 1)) And Not IsEmpty(Cells(i, 1)) And Cells(i, 1) <> [C1].Value Then Rows(i).Hidden = True
    Next i
End Sub
Bonne soirée.
 

ShrekL

XLDnaute Junior
Re,
Je ne sais pas si j'ai bien compris, code ci-dessous à tester
VB:
Sub Masquer()
'% ==> as integer - '& ==> as long - '@ ==> as currency
'! ==> as single - '# ==> as double - '$ ==> as string
    Dim Derlig&
    Derlig = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To Derlig
        'If Cells(i, 1) <> [C1].Value Then Rows(i).Hidden = True
        If IsNumeric(Cells(i, 1)) And Not IsEmpty(Cells(i, 1)) And Cells(i, 1) <> [C1].Value Then Rows(i).Hidden = True
    Next i
End Sub
Bonne soirée
Exactement ce dont j'avais besoin.

Un très gros merci cp4!! Votre aide (à toi et phil69970) est vraiment appréciée.

Je vais quand même prendre une seconde pour dire que je comprends très mal le genre de commentaire de Chris. Je n'ai pas répondu à votre commentaire, car visiblement vous n'avez pas compris que ma demande n'est qu'une goûte dans l'océan de ce que j'essaie de faire. Vous n'avez pas compris que ma demande fait partie d'un fichier 1000x plus complexe sur lequel je travaille depuis longtemps et qui n'a rien à voir avec ce que j'ai envoyé. Je ne crois pas avoir à justifier la façon dont j'ai monté mon fichier surtout que cela prendrait un temps que je n'ai pas.

Je suis peut-être un malotru, mais quand je décide d'ignorer quelqu'un, je le fais pour de vrai et je ne me souviens pas avoir déjà insulté quelqu'un inutilement caché derrière mon écran.

Encore merci à ceux qui prennent le temps d'aider les gens sur ce groupe et salutations,
 

Discussions similaires