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

Microsoft 365 Validation de données sous condition

  • Initiateur de la discussion Initiateur de la discussion drop91
  • 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 !

drop91

XLDnaute Junior
Bonjour à tous,

Je rencontre un problème avec mon fichier Excel et je n'arrive pas à trouver de solution..

Dans la colonne D, j'ai une liste de validation de données.

Voici le résultat attendu :

  • Pour la colonne E : Si la cellule en colonne D contient "Non Conformity", j'aimerais pouvoir choisir entre trois options (Niveau 1 ou Niveau 2 ou Niveau 3) dans la cellule E.
  • Si la cellule D est vide, la cellule E doit rester vide.
  • Si la cellule D contient une autre phrase, la cellule E doit indiquer "Pas d'action".
  • En cas de modification dans la cellule D, les trois conditions ci-dessus doivent être réévaluées pour la cellule E.
J'espère que mes explications sont claires.

Un grand merci pour votre aide, de préférence sans utiliser de macro.
 

Pièces jointes

Dernière édition:
Solution
Bon j'ai compris, votre version Excel n'accepte pas le séparateur point-virgule alors utilisez le fichier joint avec :
VB:
        Target(1, 2).Validation.Add xlValidateList, Formula1:="Niveau1,Niveau2,Niveau3"
Perso j'utiliserais :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("D2:D" & Rows.Count), UsedRange)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènemebts
With Intersect(Target.EntireRow, Columns(5))
    .Validation.Delete 'RAZ
    .ClearContents
End With
For Each Target In Target 'si entrées multiples
    If Target Like "Non Conformity*" Then
        Target(1, 2).Validation.Add xlValidateList, Formula1:="Niveau1;Niveau2;Niveau3"
    Else
        Target(1, 2) = IIf(IsEmpty(Target), "", "Pas d'action")
    End If
Next Target
Application.EnableEvents = True 'réactive les évènemebts
End Sub
Chez moi la copie de D2: D3 sur D4: D10001 se fait en 1,5 seconde.

Sur D4: D100001 => 24 secondes...
 

Pièces jointes

Dernière édition:
Merci à tous. Je voulais savoir s’il était possible d’obtenir le résultat sans utiliser de macro, mais j’ai compris que ce n’était pas faisable.
En revanche, lorsqu’une non-conformité est détectée, je souhaitais pouvoir choisir entre trois niveaux (niveau 1, niveau 2 ou niveau 3) dans la colonne E, chacun correspondant à une ligne différente.
Cependant, dans les deux fichiers, les niveaux sont affichés ensemble, ce qui fait qu’au lieu d’avoir trois choix distincts, je n’en ai qu’un seul.

 
Bon j'ai compris, votre version Excel n'accepte pas le séparateur point-virgule alors utilisez le fichier joint avec :
VB:
        Target(1, 2).Validation.Add xlValidateList, Formula1:="Niveau1,Niveau2,Niveau3"
 

Pièces jointes

Bonjour à tous, oui en effet le point virgule ne donnait pas le bon résultat, le fichier est fonctionnel avec la virgule, et je vous remercie tous pour vos réponses, ainsi que la résolution de mon problème.
 
- 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
3
Affichages
295
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…