Formule Excel ne fonctionne pas

Bonjour à tous,

Je rencontre un problème dans l'utilisation d'une formule Excel. Je dispose de deux fichiers au contenu différent mais avec les mêmes intitulé de colonnes.

Dans mon premier fichier, j'ai intégré la formule suivante: =SI(F2="Travaux Publics France";SI(G2="Chantier TP";SI(NB.SI(Q2;"*Ramery*");Q2;SI(NB.SI(Q2;"*BBA *");Q2;SI(NB.SI(Q2;"*Eiffage*");Q2;SI(NB.SI(Q2;"*EJL*");Q2;SI(NB.SI(Q2;"*Eurovia*");Q2;SI(NB.SI(Q2;"*Forets et *");Q2;SI(NB.SI(Q2;"*Verde*");Q2;SI(NB.SI(Q2;"*jardins*");Q2;SI(NB.SI(Q2;"*Lorban*");Q2;SI(NB.SI(Q2;"*Montaron*");Q2;SI(NB.SI(Q2;"*musial*");Q2;SI(NB.SI(Q2;"*Tromont*");Q2;"DIVERS"))))))))))));Q2);Q2)

L'objectif étant de regrouper certaines lignes en une même et seule appellation "DIVERS", tout en conservant ceux évoqué dans la formule.

Dans ce premier fichier elle fonctionne parfaitement.

En revanche, lorsque je mets en place cette formule dans mon second fichier afin d'obtenir le même résultat: =SI(F2="Travaux Publics France";SI(H2="Chantier TP";SI(NB.SI(Q2;"*Ramery*");Q2;SI(NB.SI(Q2;"*Forestier*");Q2;SI(NB.SI(Q2;"*Eiffage*");Q2;SI(NB.SI(Q2;"*leroy*");Q2;SI(NB.SI(Q2;"*Eurovia*");Q2;SI(NB.SI(Q2;"*lefrançois*");Q2;SI(NB.SI(Q2;"*Boulard*");Q2;SI(NB.SI(Q2;"*TP des 2 caps*");Q2;SI(NB.SI(Q2;"*sade*");Q2;SI(NB.SI(Q2;"*Ducrocq*");Q2;SI(NB.SI(Q2;"*colas*");SI(NB.SI(Q2;"*lamblin*");SI(NB.SI(Q2;"*bouffel*");SI(NB.SI(Q2;"*edgar *");SI(NB.SI(Q2;"*dubrulle*");SI(NB.SI(Q2;"*janssen*");Q2;SI(NB.SI(Q2;"*Balestra*");Q2;"DIVERS")))))))))))))))));Q2);Q2)

Celle-ci fonctionne pour les premiers "*noms*", puis m'indique FAUX pour tout le reste peut importe le résultat espéré...

Pouvez-vous m'aider?

Bonjour ghislain h et

Comment pourrions-nous trouver une explication (ou un autre manière de procéder) si nous ignorons le contenu de ton fichier ?

Joins un extrait de ton classeur (sans données confidentielles: seules les colonnes F, H et Q du second fichier seront utiles, si je lis bien)

Le fichier ne "pèse" que 5MO mais il m'est impossible de l'envoyer car trop volumineux...

Re-bonjour,

Le fichier ne "pèse" que 5MO mais il m'est impossible de l'envoyer car trop volumineux...

Alors, fais une copie de ton fichier, supprime les feuilles qui ne nous serviront pas. Si le fichier est toujours trop lourd, ne conserve dans la feuille concernée qu'une centaine de lignes (pour peu qu'elles représentent les différents cas de figure) en supprimant les lignes et colonnes superflues, pas en effaçant leur contenu, puis enregistre les modifications.

Appuie ensuite sur Ctrl+End pour vérifier où Excel trouve la fin de la plage utilisée.

13exemple.xlsx (59.25 Ko)

ci-joint un exemple de mon problème,

D'avance merci

Re,

On y voit déjà un peu plus clair

Maintenant, pourrais-tu expliquer ce que tu souhaites que la formule affiche comme résultat ? Si la colonne A contient "Travaux publics France", que la colonne C contient "Chantier TP" et qu'en outre, la colonne E contient un des mots de ta liste, on recopie le contenu de la colonne E ... et on inscrit "Divers" dans tous les autres cas ? Ou l'inverse ... ou autre chose encore ? Parce que, dans cette partie de formule

SI(NB.SI(E3;"*edgar *");SI(NB.SI(E3;"*dubrulle*");SI(NB.SI(E3;"*janssen*")

il manque quelque chose, non ?

bonsoir

je crois que si tu te faisais un petit tablo en annexe avec les correspondances ,un simple recherchev ferai la balle

cordialement

Oui la première explication est la bonne, en effet si travaux publics France et chantier tp alors je souhaite que la formule recopie la colonne client do selon la liste, et pour le reste divers...

Le recherche V peut être fastidieux au vue des différentes spécificités et du nombre de lignes... En sachant que j'ajoute un tas de ligne de manière mensuelle... J'aimerais juste avoir à tirer la formule...

Si on regarde bien le fichier... La formule fonctionne mais pas pour tout les clients de la liste... Donc je ne sais pas ce qu'il peut manquer..

Bonsoir,

Salut à tulipe_4

Oui la première explication est la bonne, en effet si travaux publics France et chantier tp alors je souhaite que la formule recopie la colonne client do selon la liste, et pour le reste divers...

Je ne suis pas certain que ta première formule, puisque tu dis qu'elle fonctionne, corresponde à l'explication donnée

Est-ce que tu veux bien prendre le temps de formuler l'objectif de manière circonstanciée ?

L'objectif est de suivre certains clients du marché "travaux publics France" et du segment " chantier tp" et de passer le reste en "divers" je réalise ensuite un rcd me permettant d'effectuer une analyse. J'ai donc annoté dans cette formule les "mots" ou abréviations que contiennent les clients que je souhaite suivre.

J'aimerais qu'ils apparaissent à l'identique pour les concernés, le reste annoté en "divers". Je ne sais pas si je suis clair ?..

Je ne sais pas si je suis clair ?..

Hélas non, ce qui m'intéressait c'est l'objectif poursuivi en écrivant ta formule

Dans ta formule qui semble fonctionner, tu recopies le nom du "Client D. O." aussi, si le Chantier n'est pas "TRAVAUX PUBLICS FRANCE" et si le Segment n'est pas "Chantier TP" ... dans tes dernières explications, tu dis que tu passes "tout le reste" en "DIVERS".

C'est là que le bât blesse, comme dirait mon âne.

Ah oui pardon, c'est bien ça en effet, j'avais omis les autres marchés, ils gardent aussi en effet leur appellation, je souhaites que cela ce fasse uniquement sur le marché travaux publics France.... Autant pour moi

Bonjour,

Ce qui m'inquiète, c'est que c'est la deuxième fois que tu dis que mon explication est la bonne, que je n'arrive pas à "t'arracher" un énoncé de ce que tu cherches à obtenir et que, par conséquent, je ne suis toujours pas certain de comprendre tes attentes. C'est donc plus sur base de ton autre formule (dont tu dis qu'elle fonctionne) que j'ai travaillé.

À voir les résultats obtenus, il ne me semble pas que ça permette de regrouper une série de sociétés sous l’appellation "Divers" ... en tout cas, pratiquement aucune sur les quelques 1300 dans ton classeur.

Pire encore, les deux seules qui passent sous la catégorie "Divers", le font parce qu'il y a -à mon avis- deux erreurs dans ta formule "imparfaite":

  • ta formule teste l'existence du nom "*lefrançois*" dans le nom de société en colonne E. Or, dans cette colonne, les noms sont écrits en majuscules et donc sans caractères accentués (pas de cédille sous le 'c', donc !?) ... LEFRANCOIS glisse dès lors en "Divers"
  • ta formule teste aussi la présence de "*edgar *" (avec un caractère d'espacement entre le 'r' et l'astérisque !). EDGARD DUVAL passe donc dans les "Divers"

Enfin, de ce que je comprends aujourd'hui, il me semble que mon 3e message indiquait la raison pour laquelle tu obtenais des FAUX comme résultats sur certaines lignes.

Bref, essaie ce qui suit en ligne 3 (mais si ce n'est pas correct, il va vraiment falloir que tu fasses l'effort d'expliquer ... et ne t'empresse pas non plus d'annoncer "c'est bien ça!" avant d'avoir testé soigneusement !):

=SI((A3="Travaux Publics France")*(C3="Chantier TP");SI(OU(NB.SI(E3;"*Ramery*");NB.SI(E3;"*Forestier*");NB.SI(E3;"*Eiffage*");NB.SI(E3;"*leroy*");NB.SI(E3;"*Eurovia*");NB.SI(E3;"*lefrançois*");NB.SI(E3;"*Boulard*");NB.SI(E3;"*TP des 2 caps*");NB.SI(E3;"*sade*");NB.SI(E3;"*Ducrocq*");NB.SI(E3;"*colas*");NB.SI(E3;"*lamblin*");NB.SI(E3;"*bouffel*");NB.SI(E3;"*edgar *");NB.SI(E3;"*dubrulle*");NB.SI(E3;"*janssen*");NB.SI(E3;"*Balestra*"));E3;"Divers");E3)

Le résultat obtenu est identique à celui fourni par ta formule de départ, si tu l'avais corrigée comme suit:

=SI(A3="Travaux Publics France";SI(C3="Chantier TP";SI(NB.SI(E3;"*Ramery*");E3;SI(NB.SI(E3;"*Forestier*");E3;SI(NB.SI(E3;"*Eiffage*");E3;SI(NB.SI(E3;"*leroy*");E3;SI(NB.SI(E3;"*Eurovia*");E3;SI(NB.SI(E3;"*lefrançois*");E3;SI(NB.SI(E3;"*Boulard*");E3;SI(NB.SI(E3;"*TP des 2 caps*");E3;SI(NB.SI(E3;"*sade*");E3;SI(NB.SI(E3;"*Ducrocq*");E3;SI(NB.SI(E3;"*colas*");E3;SI(NB.SI(E3;"*lamblin*");E3;SI(NB.SI(E3;"*bouffel*");E3;SI(NB.SI(E3;"*edgar *");E3;SI(NB.SI(E3;"*dubrulle*");E3;SI(NB.SI(E3;"*janssen*");E3;SI(NB.SI(E3;"*Balestra*");E3;"DIVERS")))))))))))))))));E3);E3)

bonjour

je verrai un truc du genre

=si(sommeprod(estnum(cherche(Q2;{ta ribambelle de boites})*1))>0; ......;"divers")

a améliorer

cordialement

Salut tulipe_4,

J'ai aussi pensé à SOMMEPROD, mais le fichier de départ ferait déjà 5 Mo ... et si la taille est liée au nombre de lignes, je me suis dit qu'une formule matricielle risquait peut-être de ralentir nettement.

Pour le reste, évidemment, l'écriture gagnerait en concision

U.Milité,

J'ai testé votre formule ! c'est parfait. Je retrouve bien le nom des "Clients DO" pour tout les marchés. De plus, sur le marché Travaux Publics France, et segment chantier TP, cette formule me permets bien de reprendre le nom du "Client DO" pour ce qui concerne ceux listé dans la formule. Les autres clients de ce marché et de ce segments sont bien annoté "Divers"!

Je vous remercie pour votre aide,

Cordialement,

Salut tulipe_4,

J'ai aussi pensé à SOMMEPROD, mais le fichier de départ ferait déjà 5 Mo ... et si la taille est liée au nombre de lignes, je me suis dit qu'une formule matricielle risquait peut-être de ralentir nettement.

Pour le reste, évidemment, l'écriture gagnerait en concision

normalement non puisque c'est du ligne par ligne

normalement non puisque c'est du ligne par ligne

Ah ben ... c'est pas faux

... J'irais même jusqu'à dire que tu as certainement raison

Rechercher des sujets similaires à "formule fonctionne pas"