Comme je te l'ai dit, les fonctionnalités intégrées à Excel ne suffisent pas pour effectuer le traitement demandé.
Tu es obligé d' utiliser la programmation avec VBA (Visual Basic for Applications).
Voici le code utilisé (avec des commentaires en vert pour faciliter sa compréhension) :
'On utilise l'évènement Change de la feuille pour détecter une modification de la cellule A1
Private Sub Worksheet_Change(ByVal Target As Range)
'Si plusieurs cellules ont été modifiées, on sort de la procédure
If Target.Count > 1 Then Exit Sub
'Si la cellule modifiée est A1, alors
If Target.Address = "$A$1" Then
'les événements sont désactivés
Application.EnableEvents = False
With Range("B1")
'Effacement de B1
.ClearContents
With .Validation
'La validation est supprimée
.Delete
'Si A1 a pour valeur "oui", alors
If UCase(Range("A1").Value) = "OUI" Then
'on place la liste de validation correspondant à "Pas_250" dans B1
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Pas_250"
'Sinon, si A1 a pour valeur "non", alors
ElseIf UCase(Range("A1").Value) = "NON" Then
'on affecte la valeur 0 à B1
Range("B1").Value = 0
End If
End With
End With
'les événements sont réactivés
Application.EnableEvents = True
End If
End Sub
Pour visualiser ce code, clic droit sur l'onglet de la feuille "Feuil1" puis Visualiser le code.
A+