SI(1 cellule sur 3 contient du texte alors..... ?

Bonjour,

J'ai trois cellules D8,C8,E8. Je voudrais que "si deux des trois cellules contient la mention "ok" dans sa cellule alors elle est "validé" sinon elle n'est "pas validé" ".

Est ce possible ?

Ma difficulté se trouve dans le fait que ce soit du texte. Si cela aurait été du chiffre, alors une fonction type si 1+1+1 <=2 alors. Mais là le texte me pose problème...

Auriez vous une idée svp ?

Cordialement,

Bonjour,

Auriez vous une idée svp ?

Cela nous arrive, oui...

Une base pourrait être : =NB.SI(C8:E8;"ok")

merci pour l'idée ;)

Alors j'ai fait ceci =SI(NB.SI(D8:F8;"ok");"validé";"non validé") cependant, dès qu'une des trois cellules à "OK" il me le valide. Or je ce qu'il faudrait c'est : " que si 2/3 des cellules de D8 à F8 ont un "O"K alors SEULEMENT elle est validée, sinon elle n'est pas validé...?

Je suis interresé par du VBA si les formules sont moins pratiques.

Vous remerciant par avance

Tu y étais presque.

Dans ta condition, précise le nombre de "ok" que tu souhaites. Ici, 2.

=SI(NB.SI(D8:F8;"ok")=2;"validé";"non validé")

Je suis interresé par du VBA si les formules sont moins pratiques.

Plus simple qu'une formule SI combinée avec NB.SI, difficile.

La fonction VBA sera forcément plus compliquée...

Wow super, ça fonctionne. Je ne savais pas qu'on pouvait mettre une condition chiffré en formule (sans passer par du vba) sur une valeur.

Je suis curieux néanmoins de découvrir le code vba, est ce qu'on pourrait faire quelque chose comme suit :

IF Range(“D8:F8”) > “” then
msgbox(“ validé”)
else
msgbox(“non validé”)
end if

Le problème c'est comment mettre une condition genre 2/3 des cellules...0°0

Exemples en VBA :

Sub AppelFonctions()
Dim Msg As String
    Msg = "validé"
    If Not CellValide(Range("D8:F8"), "ok", 2) Then Msg = "non " & Msg
    MsgBox Msg
    '-----------------------------
    Msg = "validé"
    If Not CellValide2(Range("D8:F8"), "ok", 2) Then Msg = "non " & Msg
    MsgBox Msg
End Sub

Function CellValide(Target As Range, What As String, Number As Integer) As Boolean
    If Target.Cells.Count > 1 Then CellValide = Application.WorksheetFunction.CountIf(Target, What) = Number
End Function

Function CellValide2(Target As Range, What As String, Number As Integer) As Boolean
Dim R As Range, cpt As Long
    For Each R In Target
        If R.Value = What Then cpt = cpt + 1
    Next
    CellValide2 = cpt = Number
End Function
Rechercher des sujets similaires à "contient texte"