Masquer des lignes

Bonjour,

Je vous écris car je n'arrive pas a solutionner une problématique sur l'un de mes classeurs que je vous met ci-dessous, je vous explique en détail les problèmes que je n'arrive pas a résoudre directement sur ce dernier.

En gros j'aimerais masquer des lignes en fonction d'une cellule qui contient une formule, si celle-ci est vide alors masquer les ligne si non les faire apparaitre.

Pouvez-vous m'aider s'il vous plaît

Je vous remercie

PS : le filtre n'est pas la solution qui m'aidera dans mon projet.

Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target.Cells(1, 1)
        If .Address = "$B$17" Then
            Me.Rows("17:23").Hidden = (.Value = "")
        ElseIf .Address = "$B$24" Then
            Me.Rows("24:43").Hidden = (.Value = "")
        End If
    End With
End Sub

Procédure à placer dans le module de la feuille.

NB- Par contre tes procédures qui y figurent ne sont pas des évènementielles et devraient être placées ailleurs !

J'espère que tes cellules B17 et B24 ne sont pas servies manuellement, car étant masquées si elles sont vides, il vaudrait mieux que ce soit fait autrement...

Cordialement.

Bonjour,

je propose ce fichier Excel :

Ctrl e ➯ travail effectué

Alt F11 pour voir le code VBA, puis revenir sur Excel

dhany

Bonjour M. FERRAND et DHANY

Je vous remercie pour votre réponse si rapide, en réalité j'ai simplifié mon classeur, ce que je n'aurais pas du faire car je n'arrive pas a la mettre en place dans "l'original", je vous prie de m'excuser de ce fait je vous revoie la version original, qui a en faite une feuille avec les donnée qui interagie avec la feuille 1.

Si vous avez des question d'hésitez pas surtout

Dhany, votre formule réagit seulement avec une activation manuelle (Ctrl e) mais il faudrait que ceci ce réalise automatiquement.

Car la cellule vide doit se remplir en fonction de la date du jour :/

Encore mille merci pour votre aide

Tu as une 2e procédure Change dans ton module. Il ne peut y en avoir qu'une !

Ta procédure initiale fait d'ailleurs double emploi avec celle que j'ai fournie à ta demande, elle est de plus incomplète (par rapport à ta demande) et assez mal écrite, tu peux donc la supprimer sans autre forme de procès !

Et je renouvelle mon conseil : virer tes procédures non évènementielles de ce module pour les mettre dans un module standard, ce qui aurait dû être fait dès le départ.

Cordialement.

Oui je l'ai supprimé car il me mettait un message d'erreur, que j'ai remplacé par la tienne.

J'ai aussi mis les procédures dans un module différent comme vous me l'avez dit, ce qui rend la feuille beaucoup plus lisible, merci !!

Mais dans le classeur ci-dessous la cellule B17 est vide mais les lignes ne se masque pas alors que j'ai mis ta procédure

Bien cordialement

Un changement de valeur résultant d'une formule ne déclenche pas l'évènement Change, il faut une modification effectuée par l'utilisateur ou par du code pour le provoquer.

Je vois que la formule réagit au changement de date en ModOp E2, date qui ne résulte pas d'une formule et doit donc être saisie... Si c'est bien le cas, cela peut être utilisé comme déclencheur pour modifier B17 (y mettre la valeur prévue), à partir donc d'une proc. Change de la feuille ModOp...

Sinon on peut également faire opérer une vérification de la date en E2, comparée à E9, à l'ouverture du classeur pour itervenir si la condition est réunie.

Cordialement.

Bonjour M.Ferrand,

En réalité la cellule E2 de la feuille mode Op est aussi une formule (=aujourd'hui()). dans mon esprit je souhaitais que tout soit automatisé la seul chose manuel a faire est la validation des cellules de la colonne A dans la feuille 1 quand la tache est fini.

Cela signifie donc que ce projet est impossible ?

Les évènements sont provoqués soit par l'action de l'utilisateur, soit par lexécution de code VBA...

Il existe un évènement Calculate, qui se déclenche lors des recalculs, mais le problème avec cet évènement est qu'on ne peut le cibler de façon précise...

Cependant ton déclencheur repose sur la date, et la date ne change qu'une fois par jour, par conséquent une vérification à l'ouverture du classeur suffira pour réaliser la mise à jour si la date voulue est atteinte.

Il s'agit également d'un évènement (Workbook_Open), il se produit à l'ouverture du classeur, la mise à jour se fera donc automatiquement.

Cordialement.

Pouvez vous m'aider à réaliser cette procédure s'il vous plait ? je comprend la logique mais je ne maitrise pas assez Excel pour pouvoir la mettre en œuvre :/

Si la mise a jour ce fait automatiquement à l'ouverture du classeur cela est équivalent à le faire manuellement si j'ai bien compris, et donc de masquer les lignes, et il faudrait ajouter cette procédure à la suite de celle que vous m'avez déjà remise.

Je ne connais pas tous les détails de ton projet, mais pour ce que j'en ai vu :

Private Sub Workbook_Open()
    With Worksheets("Mode Operatoire ")
        If .Range("E9").Value <= Date Then
            Worksheets("C'est parti ").Range("B17") = .Range("B9")
        End If
    End With
End Sub

Ceci est une procédure d'évènement niveau classeur. Elle doit par conséquent être placée dans le module ThisWorkbook (dédié au classeur).

Elle vérifie à l'ouverture si la date figurant en E9 (ModOp) est la date du jour ou inférieure [si j'ai mélangé les cellules de référence, tu pourras rectifier...]. Si c'est le cas, elle affecte la valeur de B9 (ModOp) à B17 (C'est parti).

B17 changeant de valeur, la procédure Change niveau feuille se déclenchera pour tester si B17 est vide ou non, et si trouve une valeur démasquera les lignes 17 à 23.

NB- Attention, tes noms de feuille comportent une espace à la fin... Cela te jouera des tours !

Cordialement.

Bonjour M. Ferrand,

J'ai mis en place le module que vous m'avez transmis en supprimant les espace après le nom de mes feuilles (dans le code et sur les feuilles)

Mais je n'ai pas réussit à la faire fonctionner qu'elle que soit la date que je met en E2 (mode Op) car l'apparition et la disparition de ces lignes est en fonction de la "date du jour" en E2.

Ai-je mal appliqué l'une de vos formule ?

PS : désolé pour la réponse tardive

Bien cordialement

Bonjour,

J'ouvre ton classeur... La date en ModOp E9 est 16/08, inférieure à la date du jour...

En C'est parti B17, l'inscription de ModOp B9 se trouve répercutée, et les lignes de 17 à 23 sont visibles !

Tout me semble normal ! Non ?

je pensais que la date du jour était lié a la cellule E2 du modop, ce qui n'est pas le cas j'ai donc modifier la date de départ de mon opération au 4/09/18 soit demain. Mais en ouvrant mon classeur les lignes 17 à 23 de "c'est parti" reste visible :/

Surtout n'hésitez pas a me dire si vous souhaitez que je reformule ma demande suite à une mal explication de ma part. Ou si vous voulez plus de détail sur mon projet.

Bien cordialement

Oui ! Parce que l'inscription y était et qu'elle n'a pas été suprimée :

Private Sub Workbook_Open()
    With Worksheets("Mode Operatoire")
        If .Range("E9").Value <= Date Then
            Worksheets("C'est parti").Range("B17") = .Range("B9")
        Else
            Worksheets("C'est parti").Range("B17").MergeArea.ClearContents
        End If
    End With
End Sub

Voilà qui devrait le faire...

Cordialement.

M. Ferrand,

Je tiens a vous remercier infiniment, cala fonctionne parfaitement !!!! je vous remercie vraiment pour votre aide et votre réactivité

Incroyable !!!!!

Très bonne continuation à vous

Bonne continuation à toi aussi !

Rechercher des sujets similaires à "masquer lignes"