Formule multiple avec SI, ET et OU

Bonjour,

Je souhaite créer une formule avec de nombreuses données et je ne suis pas certaine que cela soit possible. Voilà ce que je souhaiterais mettre en formule, l'un de vous pourrait-il me dire si ma demande est réalisable et si oui m'indiquer la formule ?

Formule à mettre en case F4 :

SI D4 = "Cheval" ou "Serpent" ou "Chèvre" ou "Tigre" ET E4 = "Feu +" ALORS F4 = "Alliés"

SI D4 = "Cheval" ou "Serpent" ou "Chèvre" ou "Tigre" ET E4 = "Feu -" ALORS F4 = "Concurrents"

SI D4 = "Chien" ou "Boeuf" ou "Chèvre" ou "Dragon" ET E4 = "Terre +" ou "Terre -" ALORS F4 = "Production"

SI D4 = "Chien" ou "Singe" ou "Coq" ou "Serpent" ET E4 = "Métal +" ou "Métal -" ALORS F4 = "Richesse"

SI D4 = "Cochon" ou "Rat" ou "Boeuf" ET E4 = "Eau +" ou "Eau -" ALORS F4 = "Pouvoir"

SI D4 = "Cochon" ou "Tigre" ou "Lapin" ou "Dragon" ET E4 = "Bois +" ou "Bois -" ALORS F4 = "Ressource"

Merci beaucoup pour votre aide.

Valérie

Bonjour,

Voilà la formule en F4 :

=SI(ET(OU(D4="Cheval";D4="Serpent";D4="Chèvre";D4="Tigre");E4="Feu +");"Alliés";"")

Le principe est le même pour toutes les autres, donc je te laisse tenter ta chance !

PS : la fin de la formule, à savoir ;"") est l'équivalent de la partie SINON, dans laquelle tu peux imbriquer d'autres formules SI(condition;alors;sinon)

Salut Valérie,

Salut le Fofo,

Édit : Salut Pedro

Demande originale C'est cool x)

Pour une demande dans se style là, il vaux mieux passer par VBA avec une Function :

Function VALIONNE(x As Range, y As Range)
Application.Volatile
If (x = "Cheval" Or x = "Serpent" Or x = "Chèvre" Or x = "Tigre") And y = "Feu +" Then VALIONNE = "Alliés"
If (x = "Cheval" Or x = "Serpent" Or x = "Chèvre" Or x = "Tigre") And y = "Feu -" Then VALIONNE = "Concurrents"
If (x = "Chien" Or x = "Boeuf" Or x = "Chèvre" Or x = "Dragon") And (y = "Terre +" Or y = "Terre -") Then VALIONNE = "Production"
If (x = "Chien" Or x = "Singe" Or x = "Coq" Or x = "Serpent") And (y = "Métal +" Or y = "Métal -") Then VALIONNE = "Richesse"
If (x = "Cochon" Or x = "Rat" Or x = "Boeuf") And (y = "Eau +" Or y = "Eau -") Then VALIONNE = "Pouvoir"
If (x = "Cochon" Or x = "Tigre" Or x = "Lapin" Or x = "Dragon") And (y = "Bois +" Or y = "Bois -") Then VALIONNE = "Ressource"
If VALIONNE = 0 Then VALIONNE = ""
End Function

La Function VALIONNE attend deux arguments de type Range donc deux cellules :

=VALIONNE(Cellule 1; Cellule 2)

Je te laisse essayer et revenir vers nous !

7pour-valionne.xlsm (14.84 Ko)

Salut,

Si tu préfère une formule Excel simple :

J'ai géré tes 3 premières conditions, à toi de jouer pour rajouter les 3 dernières sur le même principe :

=SI(ET(OU(D4="Cheval";D4="Serpent";D4="Chèvre";D4="Tigre")=VRAI;E4="Feu +")=VRAI;"Alliés";SI(ET(OU(D4="Cheval";D4="Serpent";D4="Chèvre";D4="Tigre")=VRAI;E4="Feu -")=VRAI;"Concurrents";SI(ET(OU(D4="Chien";D4="Boeuf";D4="Chèvre";D4="Dragon")=VRAI;OU(E4="Terre +";E4="Terre -"))=VRAI;"Production";"")))

Bon courage,

Girodo

Salut,

Si tu préfère une formule Excel simple :

J'ai géré tes 3 premières conditions, à toi de jouer pour rajouter les 3 dernières sur le même principe :

=SI(ET(OU(D4="Cheval";D4="Serpent";D4="Chèvre";D4="Tigre")=VRAI;E4="Feu +")=VRAI;"Alliés";SI(ET(OU(D4="Cheval";D4="Serpent";D4="Chèvre";D4="Tigre")=VRAI;E4="Feu -")=VRAI;"Concurrents";SI(ET(OU(D4="Chien";D4="Boeuf";D4="Chèvre";D4="Dragon")=VRAI;OU(E4="Terre +";E4="Terre -"))=VRAI;"Production";"")))

Bon courage,

Girodo

Salut Girodo,

Il est inutile d'ajouter "=VRAI" dans la formule, ça revient à tester VRAI=VRAI ou FAUX=VRAI...

Bonjour le forum,

=SI(SOMMEPROD(--((D4={"Cheval"."Serpent"."Chèvre"."Tigre"})))+SOMMEPROD(--((E4={"feu"})))=2;"Alliés";"")

Bonsoir à tous,

Merci infiniment pour vos retours !!

Juice, ne maîtrisant pas VBA j'ai opté pour la proposition de Girodo qui marche parfaitement !! Merci encore !

Petite question : je souhaite également appliquer cette formule en K4, P4, T4 etc... je compte faire un copier-coller, en revanche, cela signifie que je vais devoir changer manuellement les données (écrire K4, P4, T4 au lieu de F4 etc...). Connaissez-vous un moyen de transposer cette formule dans des colonnes voisines sans avoir à tout retaper (sachant que je ne peux pas faire de glisser-déposer car j'ai d'autres données dans les cases intermédiaires) ?

Merci encore.

Valérie

bonsoir

une contribution

9valionne.xlsx (10.86 Ko)

A noter que Rechechev aurait pu faire aussi

cordialement

Bonsoir Valérie, le forum,

je te propose ce fichier Excel :

8exo-valionne.xlsm (15.41 Ko)

la formule en F4 est : =RT() ; même formule en K4 ; P4 ; U4 ; Z4 ; AE4 ; c'est vraiment pas une formule très compliquée, n'est-ce pas ? mais comme elle existe pas déjà dans Excel, j'ai dû la rajouter en VBA ; fais Alt F11 pour voir ta fonction personnalisée, puis pour revenir sur Excel ; je mets le code VBA ici aussi (tu pourras plus facilement le copier/coller dans ton vrai fichier) :

Option Explicit

Function RT() As String
  Application.Volatile
  Dim col%, lig&, a$, b$, c$: col = Application.Caller.Column: If col < 6 Then Exit Function
  lig = Application.Caller.Row: a = Cells(lig, col - 2): b = Cells(lig, col - 1)
  If a$ = "" Or b$ = "" Then Exit Function
  RT = "?": c = Right$(b, 2): If c <> " +" And c <> " -" Then Exit Function
  a = LCase$(a): b = LCase$(b)
  If InStr("cheval serpent chèvre tigre", a) > 0 Then _
    If b = "feu +" Then RT = "Alliés" Else If b = "feu -" Then RT = "Concurrents"
  b = Left$(b, Len(b) - 2)
  If b = "terre" Then If InStr("chien boeuf chèvre dragon", a) > 0 Then RT = "Production"
  If b = "métal" Then If InStr("chien singe coq serpent", a) > 0 Then RT = "Richesse"
  If b = "eau" Then If InStr("cochon rat boeuf", a) > 0 Then RT = "Pouvoir"
  If b = "bois" Then If InStr("cochon tigre lapin dragon", a) > 0 Then RT = "Ressource"
End Function

si tu veux absolument te passer de VBA, c'est ton choix, mais ça va être drôlement coton : plus tu auras de critères, plus ta formule sera longue et complexe ! et même indigeste ! pire : au bout d'un moment, tu risqueras d'être bloquée car Excel n'accepte plus une nouvelle imbrication de parenthèses.


EDIT : j'ai optimisé le code VBA ; voir mon autre post ci-dessous !

dhany

@Valérie

j'ai optimisé mon code VBA : l'utilisation du Select Case te permettra de le compléter plus facilement (si besoin)

Option Explicit

Function RT() As String
  Application.Volatile
  Dim col%, lig&, a$, b$, c$, d$
  col = Application.Caller.Column: If col < 6 Then Exit Function
  lig = Application.Caller.Row: a = Cells(lig, col - 2): b = Cells(lig, col - 1)
  If a$ = "" Or b$ = "" Then Exit Function
  RT = "?": d = Right$(b, 2): If d <> " +" And d <> " -" Then Exit Function
  a = LCase$(a): b = LCase$(b): c = Left$(b, Len(b) - 2)
  Select Case c
    Case "feu": If InStr("cheval serpent chèvre tigre", a) > 0 Then _
        If b = "feu +" Then RT = "Alliés" Else If b = "feu -" Then RT = "Concurrents"
    Case "terre": If InStr("chien boeuf chèvre dragon", a) > 0 Then RT = "Production"
    Case "métal": If InStr("chien singe coq serpent", a) > 0 Then RT = "Richesse"
    Case "eau": If InStr("cochon rat boeuf", a) > 0 Then RT = "Pouvoir"
    Case "bois": If InStr("cochon tigre lapin dragon", a) > 0 Then RT = "Ressource"
  End Select
End Function
11exo-valionne.xlsm (15.58 Ko)

exemple : tu as cette nouvelle règle :

SI D4 = "coq" ou "rat" ou "lapin" ou "tigre" ET E4 = "Air +" ou "Air -" ALORS F4 = "Jack Pot"

sous Case "bois": rajoute cette ligne :

    Case "air": If InStr("coq rat lapin tigre", a) > 0 Then RT = "Jack Pot"

si la règle est pour un seul animal, par exemple le "lapin" :

SI D4 = "lapin" ET E4 = "Air +" ou "Air -" ALORS F4 = "Jack Pot"

    Case "air": If a = "lapin" Then RT = "Jack Pot"

dhany

Bonsoir Dhany,

Merci beaucoup ! Je suis fascinée par le VBA J'ai utilisé ta macro et cela fonctionne parfaitement ! Je me suis juste permise une légère modification : j'ai enlevé le ? qui apparaissait dans les cases lorsqu' aucune condition n'était remplie.

Dans mon tableau, je souhaite également que les cases soient colorées lorsque certaines conditions sont remplies, est-ce possible de le rajouter à la macro ? Actuellement je le fais manuellement mais si cela pouvait se faire automatiquement ce serait extraordinaire !!

Ci-dessous les conditions et couleurs à appliquer et je joins mon tableau à ce post ce sera plus simple je pense :

"Tigre" ou "Singe" = cases colorées en bleu

"Dragon" = cases colorées en vert

"Rat" en combinaison avec "Eau +" = cases colorées en rouge

"Coq" ou "Serpent" en combinaison avec "Métal -" = cases colorées en orange

J'ai lu ton 2ème post mais je n 'ai pas compris ce qu'apportait ta modification

Merci encore pour ton aide.

Valérie

4exo-valionne.xlsm (29.94 Ko)

je travaille sur ton fichier, mais ça va me prendre assez longtemps.

dhany

Bonjour,

Une autre proposition avec une fonction personnalisée (VBA).

J'ai intégré de plus 2 listes déroulantes pour les choix.

Cdlt.

6valionne.xlsm (23.14 Ko)
Function fxVAL(r As String, r2 As String) As String
    Application.Volatile
    fxVAL = vbNullString
    If r = vbNullString Or r2 = vbNullString Then Exit Function
    Select Case True
        Case InStr("Cheval Serpent Chèvre Tigre", r) > 0 And r2 = "Feu +": fxVAL = "Alliés"
        Case InStr("Cheval Serpent Chèvre Tigre", r) > 0 And r2 = "Feu -": fxVAL = "Concurrents"
        Case InStr("Chien Bœuf Chèvre Dragon", r) > 0 And r2 Like "Terre*": fxVAL = "Production"
        Case InStr("Chien Singe Coq Serpent", r) > 0 And r2 Like "Métal*": fxVAL = "Richesse"
        Case InStr("Cochon Rat Bœuf", r) > 0 And r2 Like "Eau*": fxVAL = "Pouvoir"
        Case InStr("Cochon Tigre Lapin Dragon", r) > 0 And r2 Like "Bois*": fxVAL = "Ressource"
        Case Else:
    End Select
End Function

Note : Attention à l’orthographe de boeuf (correction automatique Excel).

Re,

La mise à jour avec un exemple de MFCs.

Cdlt.

4valionne.xlsm (23.53 Ko)

Bonsoir Jean-Eric,

Merci beaucoup !

En effet, j'avais repéré le problème avec "boeuf" et l'avais modifié dans la macro

Pour les listes déroulantes, c'est une bonne idée mais cela ne va pas me servir malheureusement... pour chaque nouvelle année je dois reprendre le cycle de 12 animaux et de 10 éléments car ils se suivent toujours dans le même ordre du coup j'effectue des copier-coller de chaque ensemble... cela me prend beaucoup de temps mais moins que si je les fais un par un avec une liste déroulante. Et je ne pense pas qu'une formule puisse fonctionner pour cela... mais si c'est le cas, n'hésitez pas à m'en faire part, je suis preneuse

Je suis justement en train de préparer mes calendriers jusqu'à 2025 alors une formule magique me ferait gagner un temps fou... pareil pour les initiales des jours (L, M, M...), je les retape pour chaque nouvelle année

Je vous joins le fichier (de Dhany) sur lequel je prépare tout cela afin de vous faire une idée...

Merci encore pour votre aide.

Valérie

6exo-valionne.xlsm (94.15 Ko)

@Valérie

voici ton fichier modifié :

8exo-valionne.xlsm (32.28 Ko)

dhany

Bonjour Valérie,

j'ai répondu à ton MP.

bonne fin de week-end !

dhany

J'aime beaucoup la proposition de mbbp.

Néanmoins, j'allais plutôt faire un tableau ... mais je vois que Tulipe y a pensé avant moi.

Je ne crois pas ni en une solution VBA ni en une solution aussi complexe avec des SI/ET/OU ... c'est difficile à écrire et surtout difficile ensuite à modifier alors qu'un tableau permet de mettre à plat les paramètres.

Bonjour Steelson,

Merci pour ton message.

La formule VBA de Dhany fonctionne merveilleusement bien, cela correspond parfaitement à ce que j'attendais

Merci à tous pour vos contributions.

Bonne soirée.

Valérie

J'aime beaucoup la proposition de mbbp.

Néanmoins, j'allais plutôt faire un tableau ... mais je vois que Tulipe y a pensé avant moi.

Je ne crois pas ni en une solution VBA ni en une solution aussi complexe avec des SI/ET/OU ... c'est difficile à écrire et surtout difficile ensuite à modifier alors qu'un tableau permet de mettre à plat les paramètres.

c'est certain ,d'autant plus qu'il n'y pas pas 1000 critères

le tableau à l'avantage d'etre modulable ,on peut aussi en le nommant en dynamique y rajouter des critères

bien sur ;il faudrait le mettre dans une feuille dédiée , le tablo c'est le dictionnary du nul

cordialement

Rechercher des sujets similaires à "formule multiple"