Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Filtre dynamique et suppression valeur cellule si le premier filtre est effacée

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 !

albatore78

XLDnaute Nouveau
Bonjour @tous,

Pour mieux comprendre ce que je souhaite faire, je vous mets en pièce jointe un modèle.

Dans ce modèle, il y a 3 listes ("Titre_colonne" - "Prénoms" - "Métiers") - filtre dynamique.

Ce que je souhaite, c'est que si le menu déroulant Titres colonnes (case E3) est égal à "" alors information (case E5) doit être égal à "" (et donc effacer les valeurs s'il y en a une dans la cellule). De plus, il faudrait interdire la saisie dans cette cellule tant que la case E3 n'est pas renseignée.

En vous remerciant de votre concours 🙂
 

Pièces jointes

Solution
En PJ on ne plus rien écrire en E5 si E3 est vide. Avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Range("E5") = ""
    End If
    If Not Intersect(Target, Range("E5")) Is Nothing Then
        If Range("E3") = "" Then Range("E5") = ""
    End If
    Application.EnableEvents = True
End Sub
EnableEvents= false permet d'éviter toute réentrance.
Bonsoir Sylvanu,

Cela ne peut pas fonctionner dans mon cas, car une fois que l'ensemble des données est saisi, je viens à l'aide d'une macro, copier l'ensemble de ces valeurs dans une nouvelle feuille et je fais des tableaux croisés dynamiques pour obtenir des statistiques.
 
On a le droit aux macro ! 😀
Alors en PJ avec ceci :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        If Target = "" Then Range("E5") = ""
    End If
End Sub
Elle s'active si changement en E3, si vide alors on efface E5.
 

Pièces jointes

On peut se lâcher en VBA et comme ça je vais apprendre pleins de choses. Je suis super preneur 🙂.

On est sur un bon début pour la première partie de ma demande. Cependant, en plus de ça il faudrait (j'avoue que je n'avais pas prévu) que lorsque l'on change la valeur dans la case E3, la case E5 se mette à vide car la valeur n'est plus conforme au filtre dynamique.

Pour la 2ème partie de ma demande peut-on bloquer la cellule E5 si E3 n'est pas renseignée ?
 
C'est encore plus simple :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Range("E5") = ""
    End If
End Sub
Dès qu'on touche à E3, on vide E5.

Pour la seconde question ..... c'est déjà le cas avec la liste en E5 :
=SI($E$3="";"";INDIRECT($E$3))
 
En PJ on ne plus rien écrire en E5 si E3 est vide. Avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Range("E5") = ""
    End If
    If Not Intersect(Target, Range("E5")) Is Nothing Then
        If Range("E3") = "" Then Range("E5") = ""
    End If
    Application.EnableEvents = True
End Sub
EnableEvents= false permet d'éviter toute réentrance.
 

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…