Nombre de fonctions CHERCHE imbriquées

Résolu
Bonjour,

Savez-vous combien de fois on peut utiliser la fonction CHERCHE dans une formule ?

Dans la formule qui suit, la sixième et dernière occurrence de CHERCHE est signalée comme erreur. Je n'ai fait pourtant que copier la formule précédente...

=SI(A9=Params!$D$8;SI(SOMME(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$H$19:$H$868)))*1);INDEX('[Ref-cas-test-ProjetX-v0.6.xls]REF'!$A$1:$A$868;MAX(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$H$19:$H$868)))*LIGNE($H$19:$H$868)));Params!$D$19);SI(A9=Params!$D$9;SI(SOMME(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$J$19:$J$868)))*1);INDEX('[Ref-cas-test-ProjetX-v0.6.xls]REF'!$A$1:$A$868;MAX(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$J$19:$J$868)))*LIGNE($J$19:$J$868)));Params!$D$19);SI(A9=Params!$D$10;SI(SOMME(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$F$19:$F$868)))*1);INDEX('[Ref-cas-test-ProjetX-v0.6.xls]REF'!$A$1:$A$868;MAX(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$F$19:$F$868)))*LIGNE($F$19:$F$868)));Params!$D$19);0)))

Merci pour votre aide !
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. Contributeur
    Bonjour.
    1) La formule écrite ci-dessus comporte 855 caractères, alors qu'Excel n'en accepte que 255.
    2) Les versions d'Excel antérieures à 2007 n'acceptent effectivement que 7 niveaux d'imbrication dans les formules.
    3) Par ailleurs veuille noter que
    =Si(ESTERREUR(calcul);"à revoir";résultat)
    est équivalent à
    =SI(NON(ESTERREUR(calcul);résultat;"à revoir"))
    et fait gagner en mémoire, en vitesse d'exécution, en fiabilité et en lisibilité !
    Cordialement.
    1
    1. Contributeur
      Re,

      Le nombre maxi de fonctions (quelles qu'elles soient) imbriquées est de 7.
      Là en l'occurence il s'agit des SI
      eric
      0
      1. Contributeur
        (suite)

        Ta formule est inutilement compliquée à lire ; il faut la rendre plus lisible. Tu commences par nommer tes 4 plages
        MatA pour '[Ref­-cas-test-ProjetX-v0.6.xls]REF'!$A$1:$A$868,
        MatF pour '[Ref-­cas-test-ProjetX-v0.6.xls]REF'!$F$19:$F$868,
        MatH pour '[Ref-­cas-test-ProjetX-v0.6.xls]REF'!$H$19:$H$868,
        MatJ pour '[Ref-­cas-test-ProjetX-v0.6.xls]REF'!$J$19:$J$868.
        Du coup ta formule
        =SI(A9=Params!$D$8;SI(SOMME(NON(ESTERREUR(CHERCHE(B9;'[Ref-c­as-test-ProjetX-v0.6.xls]REF'!$H$19:$H$868)))*1);INDEX('[Ref­-cas-test-ProjetX-v0.6.xls]REF'!$A$1:$A$868;MAX(NON(ESTERREU­R(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$H$19:$H$8­68)))*LIGNE($H$19:$H$868)));Params!$D$19);SI(A9=Params!$D$9;­SI(SOMME(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.­6.xls]REF'!$J$19:$J$868)))*1);INDEX('[Ref-cas-test-ProjetX-v­0.6.xls]REF'!$A$1:$A$868;MAX(NON(ESTERREUR(CHERCHE(B9;'[Ref-­cas-test-ProjetX-v0.6.xls]REF'!$J$19:$J$868)))*LIGNE($J$19:$­J$868)));Params!$D$19);SI(A9=Params!$D$10;SI(SOMME(NON(ESTER­REUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v0.6.xls]REF'!$F$19:$­F$868)))*1);INDEX('[Ref-cas-test-ProjetX-v0.6.xls]REF'!$A$1:­$A$868;MAX(NON(ESTERREUR(CHERCHE(B9;'[Ref-cas-test-ProjetX-v­0.6.xls]REF'!$F$19:$F$868)))*LIGNE($F$19:$F$868)));Params!$D­$19);0)))
        pourra s'écrire
        =SI(A9=Params!$D$8;SI(SOMME(NON(ESTERREUR(CHERCHE(B9;MatH)))*1);INDEX(MatA; MAX(NON(ESTERREU­R(CHERCHE(B9;MatH)))*LIGNE($H$19:$H$868)));Params!$D$19);SI(A9=Params!$D$9;­SI(SOMME(NON(ESTERREUR(CHERCHE(B9;MatJ)))*1);INDEX(MatA;MAX(NON(ESTERREUR(CHERCHE(B9;MatJ)))*LIGNE($J$19:$­J$868)));Params!$D$19);SI(A9=Params!$D$10;SI(SOMME(NON(ESTER­REUR(CHERCHE(B9;MatF)))*1);INDEX(MatA;MAX(NON(ESTERREUR(CHERCHE(B9;MatF)))*LIGNE($F$19:$F$868)));Params!$D­$19);0)))
        ► le gain est appréciable, non ?
        0
        1. Ah, oui, je le note !
          Là, on est jeudi, 19h30 et veille de long WE... Alors on verra lundi matin sans fautes !
          0
          1. Bonjour !

            C'est la première fois que je nomme des plages de cellules, et je dois louper une fois, parce que ma formule ne les reconnais pas...
            Vous auriez une idée ?

            merci !
            0
            1. Re bonjour...

              Après pas mal de test j'en arrive à la conclusion suivante : j'arrive à nommer des plages de cellules, à les imbriquer dans des formules, mais dès que j'essaie de le faire pour la formule citée plus haut, cela me renvoie un résultat à 0. Je n'arrive vraiment pas à voir pourquoi.

              Vivement votre retour et merci de votre aide !
              0
              1. Contributeur
                Sans voir le fichier, ça relève des sciences divinatoires !
                Assure-toi de faire une copie de fichier au format 2003 (.xls) sans macro, en modifiant les noms propres s'il y en avant de créer un lien avec https://www.cjoint.com/ et de le coller dans un procahin post.
                0
                1. Vous avez raison, ça relevait des sciences divinatoires... Et j'ai trouvé l'erreur ! :)
                  Merci pour votre aide !
                  0