Masquer des cellules contiguës en fonction d'une valeur

Bonsoir le forum,

Dans un fichier, j'ai une liste de factures clients avec leur date d'échéance.

Je souhaite que l'utilisateur puisque masquer les lignes des clients qui n'ont aucune échéance dépassée (par ex. le 01/10/2020), pour ne pas les relancer, et ne laisser visible que les clients qui ont au moins une échéance dépassée.

ci-dessous une image du fichier :

image

J'ai 2 soucis :

- j'y parviens avec le code ci-dessous, mais je préférerais, pour le fun, ne pas avoir à masquer tout, puis ne rendre visibles que les lignes qui répondent à la condition :

Sub test2()

Range("A5:F25").EntireRow.Hidden = True
Set plage = Range("E5:E25")

For Each Cell In plage

If Cell.Value <> "" And Cell.Value < 44105 Then Cell.CurrentRegion.Select

Selection.EntireRow.Hidden = False

Next Cell

End Sub

- par ailleurs je n'ai pas réussi à mettre dans le code " < "01/10/2020", donc je "triche" en mettant sa valeur numérique, soit 44105.

Auriez-vous une solution plus élégante pour ces 2 soucis ? Merci d'avance

Michael

J'ai oublié de joindre un fichier exemple avec son bout de code

Michael

Salut Michael,

ainsi, peut-être ?

For x = 5 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("E" & x).Value <> "" Then Rows(x).Hidden = IIf(CDate(Range("E" & x).Value) > CDate([I3]), True, False)
Next


A+

Bonjour Curulis57,

Merci de votre proposition.

Mais ce n'est pas tout à fait ça : si un client a au moins 1 facture avec échéance dépassée, je veux voir toutes les factures de ce client.

Michael

Bonjour le forum,

Je me permets de réactiver ce post car je n'ai peut-être pas été assez clair et n'ai pas reçu de réponse positive :

Dans une liste de factures comme dans l'exemple ci-dessous, je veux que l'ensemble des lignes des clients ayant au moins une échéance en retard restent visibles (et donc que les clients n'ayant aucune échéance en retard soient entièrement masqués ) :

Autrement dit, par exemple,

toutes les lignes en jaune doivent rester visibles (car au moins une échéance est inférieure à la cellule H3, et même si certaines de leurs échéances ne sont pas dépassées), et les autres masquées :

image

Je vous joins le fichier Excel.

J'ai essayé avec currentregion, mais ce n'est pas concluant (ou bien je le maîtrise mal ...)

Je suis sûr que vous allez me proposer une super solution.

Merci d'avance

Michael

Salut Michael,

- un double-clic en [A1:B1] démarre la macro qui cache les comptes à jour ;
- un clic-droit en [A1:B1] ré-affiche tous les comptes.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow%, iOK%
'
If Not Intersect(Target, Range("A1:B1")) Is Nothing Then
    Cancel = True
    For x = Range("B" & Rows.Count).End(xlUp).Row To 4 Step -1
        If Range("B" & x).Value <> "" Then
            iOK = 0
            iRow = Columns(2).Find(what:=Range("B" & x).Value, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row
            For y = iRow To x
                If Range("E" & y).Value <> "" Then _
                    If CDate(Range("E" & y).Value) <= CDate([H3]) Then iOK = 1
            Next
            Rows(iRow & ":" & x).Hidden = IIf(iOK = 0, True, False)
            x = iRow
        End If
    Next
End If
'
End Sub


A+

Bonsoir Curulis57,

C'est tout simplement génial.

Je en comprends pas tout, mais je vais essayer...

Merci beaucoup

Michael

Bonjour,

Curulis57 a trouvé une solution brillante à mon problème, mais je ne sais pas comment, et où, installer ces 2 procédures dans ma macro (je ne me suis jamais servi de telles procédures) qui comprend en amont beaucoup de lignes de code.

Je vous joins ci-dessous une copie le l'explorateur de projets

Précision importante : c'est dans l'onglet "BALAGEE" que je souhaite utiliser ces 2 procédures, mais cet onglet est créé dans le cours de la macro)

image

Si vous pouvez m'aider, merci beaucoup !

Michael

Rechercher des sujets similaires à "masquer contigues fonction valeur"