Formules conditionnelles Excel

Résolu
JB -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je bataille avec une formule conditionnelle sous excel. C'est pourtant une formule toute bête...
Je souhaite faire une opération en fonction d'une période préalablement selctionner à l'aide d'une Recherche V et d'une liste déroulante. Sachant qu'il y a 12 périodes j'ai rentrée11 formules "SI" à la suite. Ma formule bug à partir de la 6ème formules: si(B4=1;C14-E14;si(B4=2;C14-(E14+F14);si(B4=3;C14-E14+F14+G14);si(B4=4;C14-(E14+F14+G14+H14);si(B4=5;C14-(E14+F14+G14+H14+I14);si(B4=6;c14-(E14+F14+G14+H14+I14+J14

Quelqu'un peut me dire pourquoi ça ne fonctionne pas?

Merci d'avance!
Configuration: Windows XP
Internet Explorer 7.0

23 réponses

  • 1
  • 2
  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour à tous

    petite astuce pour éviter les enchainements de SI et de compter les parenthèses( j'y suis rarement arrivé du 1° coup!)

    =CHOISIR(B4;C14-E14;C14-(E14+F14);...etc)
    4
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Impeccable Michel
      Merci pour lui et pour nous
      0
    2. zorroestarrivé Messages postés 1849 Date d'inscription   Statut Membre Dernière intervention   522
       
      Pas mal la formule.

      Simplissime!!
      0
  2. Denis.L Messages postés 438 Statut Membre 232
     
    Bonjour,

    la formule "SI" est limitée à 7 (sauf excel 2007 je crois)

    Denis
    0
    1. Denis.L Messages postés 438 Statut Membre 232
       
      tu peux diviser tes conditions en 2 et les mettre en B5 et B6

      =SI(B4<7;B5;B6)



      conditions de 1 à 6 en B5
      et conditions de 7 à 12 en B6


      Denis
      0
  3. zorroestarrivé Messages postés 1849 Date d'inscription   Statut Membre Dernière intervention   522
     
    Salut,

    Si tu as fait un copier-coller de ta formule il te manque une parenthèse là où j'ai mis une *:

    si(B4=1;C14-E14;si(B4=2;C14-(E14+F14);si(B4=3;C14-*E14+F14+G14);si(B4=4;C14-(E14+F14+G14+H14);si(B4=5;C14-(E14+F14+G14+H14+I14);si(B4=6;c14-(E14+F14+G14+H14+I14+J14

    Sinon, tu peux mettre ton fichier excel sous www.cijoint.fr et me donner le lien
    0
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    Je ne sais pas si votre formule est bien éditée dans le message, mais si c'est le cas, elle manque de parenthèse:
    1 à la fin pour fermer le dernier item et ensuite 5 parenthèses successives correspondantes au nombre de SI inscrit dans la formule
    Ceci dit, effectivement sur Excel 2003 et avant seul 7 si sont admis dans cette formulation.
    La solution est alors de passer par une colonne intermèdiaire:
    1° colonne: 7 condition "SI" et une fin de formule, l'adresse de la cellule contigüe
    Dans la cellule contigüe, les 5 conditions restantes, ainsi votre première colonne renverra toujours le bon résultat.

    Crdlmnt

    0
    1. timino
       
      désolé vaucluse la formule que vous m'avez mentré n'a pas marchée je ne sai pas pourquoi à chaque fois me dit erreur dans la formule est ce que tu peux m'aidé une autre fois et merci beaucoup vaucluse mais je voudrai aussi m'inscrir dans le forum est ce que tu peux me montré comment
      0
      1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > timino
         
        Bonjour Timino
        Vu la position de ton message dans ce forum et le fait que je n'en trouve aucun autre correspondant à ton pseudo, je ne vois pas sur quel sujet je t'avais répondu avec une solution qui ne marchait pas...!
        Peux tu reprèciser
        Crdlmnt
        PS pour s'inscrire
        Clic en haut à droite sur connexion et suivre le guide.
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    bonjour à tous

    jolie solution michel (je ne connaissais pas)

    autre solution dont la limite est la longueur de la formule utilisation des fonction booléennes

    =((B4=1)*C4-E14) + ((B4=2)*(C14-(E14+F14))) + ((B4=3) * (C14-E14+F14+G14)) etc......

    bien mettre les parenthèses (moins difficile qu'avec des si imbriqués)
    0
  7. JB
     
    Ok merci à tous.
    J'ai opté pour la solution de la céllule contigüe.

    A plus
    0
  8. Raymond PENTIER Messages postés 58220 Date d'inscription   Statut Contributeur Dernière intervention   17 486
     
    Bravo, michel ! tout comme wilfried et certainement beaucoup d'autres, je n'avais jamais essayé cette fonction, qui se révèle précieuse dans bien des cas ...
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Merci à vous Wilfried,Vaucluse, Zorro, Raymond mais il n'y a pas grand mérite;( j'ai été à l'école de Monique que Wilfied connait bien! Wilfied, STP, tu lui diras bonjour de ma part + bisous ce WE à Rennes)

    à creuser: cette fonction a pas mal de possibilités expliquées dans l'aide.

    Bonne soirée
    0
    1. wilfried_42 Messages postés 912 Statut Contributeur 245
       
      re:

      Pas de problème michel, je lui ferai un bisou de ta part, il est vrai que Monique est époustouflante, et j'ai beaucoup appris grâce à elle, (Sommeprod et formules matricielles)
      0
  10. DELANNOY JESSY Messages postés 1 Statut Membre
     
    Salut je crois que dans ta formule tu as oublié de paranthese !!!
    0
  11. sangokamel
     
    Bonsoir tout le monde.

    Je relance ce sujet car j'aimerais des explications pour la solution de michel :

    =CHOISIR(B4;C14-E14;C14-(E14+F14);...etc)

    Serait- il possible de décrire son fonctionnement ? Car je ne comprend pas trop.

    J'ai un probleme avec une trentaine de conditions à réaliser. Et vu que Exce l2003 ne gère que 7 conditions je sèche.

    Voici ma formule avec toutes mes conditions (chaque série de 7 conditions est donc reprise par la

    =SI(A1="France";"FR";SI(A1="Morocco";"FR";SI(A1="Spain";"IB";SI(A1="Andorra";"IB";SI(A1="Belgium";"BELUX";SI(A1="Luxembourg";"BELUX";""))))))

    =F1 & SI(A1="Hong-Kong";"APAC";SI(A1="Japan";"APAC";SI(A1="Malaysia";"APAC";SI(A1="Singapore";"APAC";SI(A1="Taiwan";"APAC";SI(A1="Thailand";"APAC";""))))))

    =F1 & SI(A1="Indonesia";"APAC";SI(A1="Austria";"GCE";SI(A1="Germany";"GCE";SI(A1="Poland";"GCE";SI(A1="Portugal";"IB";SI(A1="India";"INDIA";""))))))

    =F1 & SI(A1="Greece";"MEA";SI(A1="South Africa";"MEA";SI(A1="South Africa (SAF)";"GCE";SI(A1="Swiss";"MEA";SI(A1="Turkey";"MEA";SI(A1="US";"NAM";""))))))

    =F1 & SI(A1="Mexico";"NAM";SI(A1="The Netherlands";"NL";SI(A1="Brasil";"SAM";SI(A1="Argentina";"SAM";SI(A1="Chile";"SAM";SI(A1="US";"NAM";""))))))

    =F1 & SI(A1="Colombia";"SAM";SI(A1="Peru";"SAM";SI(A1="Venezuela";"SAM";SI(A1="United Kinkgdom";"UK";""))))

    Cette solution marche mais elle crée donc des doublons voici le résultat :

    Hong-Kong APAC APAC
    Japan APAC APAC
    Malaysia APAC APAC
    Singapore APAC APAC
    Taiwan APAC APAC
    Thailand APAC APAC
    Indonesia APAC APAC
    Luxembourg BELUXBELUXBELUXBELUX BELUX BELUX BELUX BELUX BELUX
    France FRFRFRFR FR FR FR FR FR
    Morocco FRFRFRFR FR FR FR FR FR
    Austria GCE GCE
    Germany GCE GCE
    Poland GCE GCE
    Andorra IBIBIBIB IB IB IB IB IB
    Portugal IB IB
    Spain IBIBIBIB IB IB IB IB IB
    India INDIA INDIA
    Italy
    Greece MEA MEA
    South Africa (SAF) GCE GCE
    Swiss MEA MEA
    Turkey MEA MEA
    US NAMNAM NAM
    Mexico NAM
    The Netherlands NL
    Brasil SAM
    Argentina SAM
    Chile SAM
    Colombia SAM
    Peru SAM
    Venezuela SAM
    United Kingdom
    Belgium BELUXBELUXBELUXBELUX BELUX BELUX BELUX BELUX BELUX
    France FRFRFRFR FR FR FR FR FR
    Germany GCE

    DOnc ma question : comment supprimer les doublons ?

    Ou mieux, pensez vous que la technique sus-citées de michel puisse résoudre ce problème?

    merci par avance.
    0
  12. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonsoir,

    La fonction choisir: par ex
    Choisir(A1;"zaza";zeze";zyzy";A3+A4)

    en A1 il y a un nombre
    si A1=1 il renvoie zaza
    2 renvoie zeze
    ...
    A1=4 effectue le calcul A3+A4...

    Donc tu ne peux pas l'utiliser.

    Par contre je n'ai pas compris
    F1 & ( si...) dans tes formules
    il faudrait nous en dire +
    0
  13. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir tout le monde,

    Plutôt que supprimer des doublons je me demande si ton pb n'est pas plutôt de retrouver un code en fonction d'un pays.
    Si oui, c'est recherchev() qu'il te faut :
    sangokamel.xls

    Si non, explique ta problématique plutôt que de nous demander de corriger un résultat obtenu avec des choix hasardeux. Si on ne connait pas tes données de départ ni ce que tu veux obtenir comment veux-tu obtenir une aide efficace...
    On aime bien les devinettes, mais faciles et après le 5ème apéro

    eric
    0
  14. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonsoir Eric

    Moi, après le 5° apéro, ch,e.. chuis.. roubé, hips!, bou- bourré; :-#

    bonne soirée
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      bé moi aussi, c'est bien pour ça qu'il faut qu'elles soit faciles les devinettes. Même celles des vache-qui-rit deviennent dures... ;-)
      0
  15. sangokamel
     
    Bonjour,

    Tout d'abord merci de vous être penchés sur mon cas.

    Michel merci pour ta petite explication en effet elle ne correspond donc pas à ma requête.
    F1 & ( si...) sert à réutiliser la fonction SI car cela est limité à 7 sous excel 2003.

    Donc je déclare 7 conditions dans une colonne.

    Puis 7 dans une autre, en veillant à dire a cette colonne de reprendre la condition de la colonne précendete.
    Ainsi la j'ai 14 conditions réalisables.
    Et j'ai procédé comme ca sur plusieurs colonnes car j'ai 36 pays et donc 36 conditions.
    mais le résulat n'est pas probant comme le montre mon copier coller sur mon précédent poste car ca crée des doublons sur différentes colonnes.

    En fait, mon problème est de retrouver un code en fonction d'un pays comme l'affirme eric.
    Cela dans le but de réaliser une sorte d'automatisme pour que lorsque la base de mon fichier sera alimenté, alors les pays seront directement classé selon le code en question.

    Ex : si j'ai Belgique et Luxembroug je veut qu'a la colonne suivante soit ajouté automatiquement BELUX.

    Eric, La fonction rechercheV semble etre une solution en effet (je vais essayer de comprendre ton code car bien que simple j'ai un problème avec cette fonction je n'arrive jamais a bien l'utiliser).

    Je reviendrais a vous si je n'arrive pas a le comprendre.
    merci encore.
    0
    1. sangokamel
       
      re tout le monde.

      J'ai besoin de quelques précisions supplémentaires.

      Eric, tout d'abord quel est le rôle de l'astérisque tout en bas de la liste des pays?.

      Si j'ia bien compris ta forumule Recherche V se résume ainsi :


      Excel compte le nombre de fois ou le pays correspondant apparait.
      Si ce nombre est supérieure à 0 alors on pratique une rechercheV.
      Si résulat vrai on affiche le code du Pays.
      Si résultat faux on met FAUX.

      Pour le chiffre 2 dans ce bout de forumule (A1;PaysCode;2;FAUX);"") je n'arrive pas à saisir son rôle par contre.
      0
  16. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour le forum
    Eric,
    ..."celles des vache-qui-rit deviennent dures... ;-)"...
    connais pas! le forum étant un lieu de partage de connaissances etc etc ( et 1 air de violon romantique, 1)
    Excuses moi, Sango, de foutre le B... dans ton post.
    0
  17. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Merci pour ta grande indulgence! ;-)

    Pour me faire pardonner en répondant à ta question , Eric ne m'en voudra pas j'espère ( 7° Apéro?)

    "Payscode" est le nom de la plage de données regroupant dans une 1° colonne (pas forcément A) le nom du pays et dans une 2° colonne le code
    donc le 2 désigne la 2° colonne dans le tableau (plage) "payscode"
    0
    1. sangokamel
       
      J'ai compris plus tard que le 2 signifiait deuxième colonne;

      mais ce qui me bloque c'est "PaysCode"
      EN décryptant la formule je suppose que PaysCode est un nom donné aux colonnes A et B ou plutôt à la plage de cellules contenus dans A et B.

      Mais pour être sur de cela j'ai cherché ou était déclaré "PaysCode" mais sans succès.

      Donc PaysCode concerne t-il les colonnes A et B en même temps ? Et comment déclaré un nom à ces cellules si c'est bien le cas?

      Merci
      0
  18. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Pour nommer une cellule ou une plage de cellules
    XL<2007
    Sélectionner la plage voulue
    Insertion-nom-définir

    pour trouver la plage nommée
    edition-atteindre et tu sélectionnes "payscode"
    0
  19. sangokamel
     
    Merci pour cette précision Michel.
    Je comprends mieux.

    meme si il existe toujours un flou.
    Notemment concernant

    =SI(NB.SI(PaysCode;A1)>0;RECHERCHEV(A1;PaysCode;2;FAUX);"" )

    Le ">0" joue quel role ?
    0
  20. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    >0 veut dire que l'on a trouvé le pays au moins 1 fois...
    Si Eric n'avait pas géré cette possibilité d'erreur, par ex: suissse au lieu de suisse, XL aurait retourné un symbole d'erreur genre #N/A, en gérant cette formule (NB.SI(plage, valeur) équivaut à "dis moi le nombre de "valeurs" dans la plage) si le nombre de suissse est égal à Zéro, la formule renvoie la valeur vide "".

    Bonne soirée
    0
  • 1
  • 2