Masquer cellule sous condition

  • Initiateur de la discussion Initiateur de la discussion jjjerome
  • Date de début Date de début

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 !

jjjerome

XLDnaute Occasionnel
Bonjour le forum,

Je cherche un code permettant d'afficher (ou masquer) des lignes, si les certaines valeurs sont présentes dans la séléction (F15 K18). J'ai essayé le code suivant, mais il ne fonctionne pas si j'entre plusieurs valeurs dans la selection. Si QQ a une idée pour m'aider...


Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque nouvelle édition
'si l'édition à lieu ailleurs que dans la seletion, sort de la procédure

If Intersect(Target, Range("F15:K18")) Is Nothing Then: Exit Sub

If Target.Value <> 13 Then ' condition : si slot 13 present dans la selection
Worksheets("OPT").Range("18:21").EntireRow.Hidden = True
Else 'sinon
Worksheets("OPT").Range("18:21").EntireRow.Hidden = False
End If

If Target.Value <> 14 Then ' condition : si slot 14 present dans la selection
Worksheets("OPT").Range("22:25").EntireRow.Hidden = True
Else 'sinon
Worksheets("OPT").Range("22:25").EntireRow.Hidden = False

' Suite pour tous les slots

End If 'fin de la condition
End Sub
 

Pièces jointes

Re : Masquer cellule sous condition

Bonjour Jerome

essaye peut être comme ci dessous, si j'ai bien compris...

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque nouvelle édition
Dim c As Range
'si l'édition à lieu ailleurs que dans la seletion, sort de la procédure
For Each c In Target
    If Not Intersect(c, Range("F15:K18")) Is Nothing Then
        If c.Value <> 13 Then ' condition : si slot 13 present dans la selection
            Worksheets("OPT").Range("18:21").EntireRow.Hidden = True
            Else 'sinon
            Worksheets("OPT").Range("18:21").EntireRow.Hidden = False
        End If
        If c.Value <> 14 Then ' condition : si slot 14 present dans la selection
            Worksheets("OPT").Range("22:25").EntireRow.Hidden = True
            Else 'sinon
            Worksheets("OPT").Range("22:25").EntireRow.Hidden = False
        ' Suite pour tous les slots
        End If 'fin de la condition
    End If
Next c
End Sub

bon après midi
@+
 
Re : Masquer cellule sous condition

Re,

normal, à la première cellule évaluée (13), il masque, mais ensuite si la 2ème cellule est égale à 14, il affiche les lignes puisque different de 13.... je suppose que tu utilises un copier coller, pour alimenter ta feuille "equip" ?

@+
 
Re : Masquer cellule sous condition

Re

une autre solution, mais suis pas trop sur du résultat final attendu :

Code:
Dim c As Range
With Worksheets("OPT")
    .Range("18:25").EntireRow.Hidden = False
    For Each c In Target
        If Not Intersect(c, Range("F15:K18")) Is Nothing Then
            If c.Value = 13 Then
                .Range("18:21").EntireRow.Hidden = True
                ElseIf c.Value = 14 Then .Range("22:25").EntireRow.Hidden = True
            End If
        End If
    Next c
End With
End Sub

@+

Edition : = 14 au lieu de <> 14
 
Re : Masquer cellule sous condition

Pierrot, en fait, le besoin final est :
Quand 13 est dans la selection, les lignes 18 à 21 sont affichées (sinon : masquées.
Quand 14 est dans la selection, les lignes 22 à 25 sont affichées (sinon : masquées.
Quand 15 est dans la selection, les lignes 26 à 29 sont affichées (sinon : masquées...
Merci de ton aide
 
Re : Masquer cellule sous condition

Re,

oui, mais tu disais :

Je cherche un code permettant d'afficher (ou masquer) des lignes, si les certaines valeurs sont présentes dans la séléction (F15 K18). J'ai essayé le code suivant, mais il ne fonctionne pas si j'entre plusieurs valeurs dans la selection.

J’ai traduis, sans doute à tort, que tu faisais une modification simultanée de plusieurs cellules, sans doute par un copier coller ? Simple hypothèse...

Donc si tu fais une boucle sur toutes les cellules modifiées, les tests et actions effectués sur une modification, annulent les précédents...

A priori en l'état je ne vois pas trop de solution, mais il y a sans doute quelque chose qui m'échappe...

Bonne soirée.
@+
 
Re : Masquer cellule sous condition

Non, en fait, je souhaite afficher toutes les lignes correspondantes aux champs selectionnés (Ex : 13, 14, 15...), et masquer les lignes correspondantes à tous les autres champs.
Si quelqu'un peu me proposer quelque chose.
🙁
 
Re : Masquer cellule sous condition

Bonsoir Pierrot, je n'avais pas vu ta réponse, je viens juste d'essayer, mais je ne parviens pas à obtenir ce que je souhaite... Je ne suis pas sure de comprendre ce que tu veux dire par "alimenter la feuille par copier/coller", mais non, les champs de sélections, sont renseignés manuellement, sans copier coller.
Je n'ai pas réussi a faire marcher le code de ta 2eme solution (aucun resultat), le problème vient peut-être de là.
Pour reprendre, sans tenir compte du code que j'avais proposé (qui est enfait un code que j'ai trouvé sur le forum et que j'ai essayé d'adapter avec beaucoup de mal à mon besoin...), je souhaite que, par ex : si les champs 13 et 14 sont dans la selection de la page "Equip", les lignes correspondantes en page "OPT" soient affichées. En claire, que toutes les lignes des champs se trouvant dans la selections soient effichées (et pas uniquement le dernier champ rempli), et que les lignes correspondantes aux champs non renseignés soient masquées.
En éspérant avoir été plus claire, merci pour tes réponse et pour essayer a nouveau de résoudre mon problème. 😉
 
Re : Masquer cellule sous condition

Bonjour Jérome

un dernier essai, plus par macro événementielle, procédure lié à un bonton sur la feuille "Equip", code dans le module 1.

La macro affiche toutes les lignes en début de procédure, masque toutes celles présentes dans la selection (13,14,15), à voir...

bonne journée.
@+
 

Pièces jointes

Re : Masquer cellule sous condition

Bonjour Pierrot93,
Ca y est, j'ai tout a fait le résultat que je cherchais (en inversant false/True et en éttandant Range aux lignes concernées), Mais est-il possible d'obtenir la même chose, sans devoir cliquer sur le bouton lié.

Voici le code que j'ai rentré :
Sub test()
Dim c As Range
With Worksheets("OPT")
.Range("14:81").EntireRow.Hidden = True
For Each c In Range("F15:K18")
If c.Value = 13 Then
.Range("18:21").EntireRow.Hidden = False
ElseIf c.Value = 14 Then .Range("22:25").EntireRow.Hidden = False
ElseIf c.Value = 15 Then .Range("26:29").EntireRow.Hidden = False
ElseIf c.Value = 16 Then .Range("30:33").EntireRow.Hidden = False
ElseIf c.Value = 17 Then .Range("34:37").EntireRow.Hidden = False
ElseIf c.Value = 18 Then .Range("38:41").EntireRow.Hidden = False
ElseIf c.Value = 19 Then .Range("42:45").EntireRow.Hidden = False
ElseIf c.Value = 20 Then .Range("46:49").EntireRow.Hidden = False
ElseIf c.Value = 21 Then .Range("50:53").EntireRow.Hidden = False
ElseIf c.Value = 25 Then .Range("14:15").EntireRow.Hidden = False
ElseIf c.Value = 28 Then .Range("16:17").EntireRow.Hidden = False
ElseIf c.Value = 33 Then .Range("54:57").EntireRow.Hidden = False
ElseIf c.Value = 34 Then .Range("58:61").EntireRow.Hidden = False
ElseIf c.Value = 35 Then .Range("62:65").EntireRow.Hidden = False
ElseIf c.Value = 36 Then .Range("66:69").EntireRow.Hidden = False
ElseIf c.Value = 37 Then .Range("70:73").EntireRow.Hidden = False
ElseIf c.Value = 38 Then .Range("74:77").EntireRow.Hidden = False
ElseIf c.Value = 39 Then .Range("78:81").EntireRow.Hidden = False
End If
Next c
End With
End Sub


Merci pour toutes tes réponses !
 
- 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
9
Affichages
508
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
586
Réponses
1
Affichages
468
Réponses
3
Affichages
564
Retour