Cumul fonction NBSI

Résolu/Fermé
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013 - 18 déc. 2013 à 17:32
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 - 19 déc. 2013 à 14:50
Bonjour à tous,

Je travaille actuellement sur un fichier excel de 20 000 lignes et j'aimerais "automatiser" une partie de ce que je dois faire pour gagner du temps.

Grossièrement mon fichier se compose comme suit :
Colonne A : nom des produits
Colonne B : catégories des produits

J'aimerais faire une formule avec : si la cellule A1 contient le mot "pomme" alors inscrire "fruit" dans la cellule B1 mais si la cellule contient le mot "crème" alors inscrire le mot "produit laitier" dans la cellule B1.

J'ai déjà une partie de la formule mais je n'arrive pas à trouver comment cumuler 2 SI.
=SI(NB.SI(A1;"*pomme*");"fruit";"")

Merci d'avance pour vos réponses.

Bonne soirée.

8 réponses

RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
Modifié par RachelMartel le 18/12/2013 à 17:43
Je ne comprends pas pourquoi vous voulez utiliser la fonction NB.SI qui compte le nombre de valeur selon un critère.

Dans votre cas, je crois que ce serait plutôt :

=Si(A1="pomme";"fruit";si(A1="crème";"produit laitier";""))

Selon les produits, la formule pourrait être très longue...
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
18 déc. 2013 à 17:39
Bonjour,

Pourquoi NB.SI

simplement SI

=si(A1="pomme";"fruit";si(A1="créme";"produit laitier";si(A1="veau";"viande";"")))

ensuite tout dépend du nombre de conditionnelle SI, il sera peut être préférable d'utiliser d'autres fonctions
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 411
18 déc. 2013 à 17:52
Salut Mike
comme je dis dans mon message plus bas, il semblerait que la cellule ne contienne pas que le mot pomme, sinon effectivement, le NB.SI n'est pas justifié.
Attendons que Bizz tranche la pomme!
bien cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 411
Modifié par Vaucluse le 18/12/2013 à 17:44
Rachel...
Le NB.SI permet de détecter si un texte de A contient le mot Pomme lorsqu'il est encadré par des astérisques, même s'il n'est pas seul dans la cellule, ce que SI ne permet pas
pour info
"mot*" le texte commence par le mot
"*mot" le texte finit par le mot
"*mot*" le mot est dans le texte
si le mot a trouver est dans une cellule ex X1, il faut écrire:
"*"&X1&"*"
Ce type de code fonctionne avec le séparateur ; (NB.SI, RECHERCHEV EQUIV SOMME.SI ect..)

la formule serait donc:
=SI(NB.SI(A1;"*pomme*");"Fruit";SI(NB.SI(A1;"*crème*");"produit laitier";""))

crdlmnt

Errare humanum est, perseverare diabolicum
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
18 déc. 2013 à 17:52
C'est exactement ça ! Merci pour votre réponse.
Il s'agissait bien d'un mot recherché, d'où l'utilisation de la fonction NB.SI

J'ai essayé votre formule, mais excel me dit qu'il y a "trop d'arguments entrés pour cette formule"

Voici ma formule exacte :
=SI(NB.SI(B5597;"*chapeau*");"CHAPEAUX ET COIFFES";SI(B5597;"*perruque*";"PERRUQUES";""))

Que faire ?

Merci d'avance
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
18 déc. 2013 à 17:56
Il manque un NB.Si à la fin

=SI(NB.SI(B5597;"*chapeau*");"CHAPEAUX ET COIFFES";SI(NB.SI(B5597;"*perruque*");"PERRUQUES";""))
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
18 déc. 2013 à 18:00
Effectivement, après la correction ci-dessus cela fonctionne beaucoup mieux !
Merci bien ! Vous m'avez fait gagner un temps fou !
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
18 déc. 2013 à 17:57
Re,

Effectivement cela change tout, et combien de variété de produit as tu
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
18 déc. 2013 à 18:02
J'ai au moins 20 catégories de produits.
Savez-vous à combien le logiciel est limité ?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 411
18 déc. 2013 à 18:07
Ca dépend de la date
Si vous êtes à 2007 et plus, il n'y a pas de limite. Mais sur 20000 cellules ça va être coton. II va peut être falloir passer par VBA, mais là, c'est mon copain Mike qui prend la parole :-))
Bonne route et bonne chance
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
18 déc. 2013 à 18:19
Je travaille sur MAC excel 2011.

Je ne veux pas vous faire perdre votre temps à chercher d'autres solutions, car je ne connais pas du tout VBA.
Donc je vais appliquer ma petite formule au mieux et faire le reste à la mano.

En tout cas merci beaucoup à tous, vous m'avez retiré une jolie épine du pied ! Et bravo pour votre réactivité.

Bonne soirée.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 411
18 déc. 2013 à 18:24
Essayez quand même de l'allonger avec plus de référence. Vous verrez bien si ça coince
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
Modifié par Mike-31 le 18/12/2013 à 18:15
Re,

le nombre n'a jamais été un problème, c'est la répétition des formules qui alourdissent inutilement les fichiers et ralentissent l'exécution des calculs. je regarde si on peut passer sans VBA

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
Modifié par Mike-31 le 18/12/2013 à 19:12
Re,

Alors si tu es fâché avec le VBA je te conseille de créer une petite base de données sur 2 colonnes exemple en K et L qui pourront être masquées ou se trouver sur une autre feuille.
colonne K le mot recherché et colonne L le mot qui doit être affiché

ensuite amuse toi à créer une première formule conditionnelle imbriquant maxi 7 si

=SI(NB.SI(A4;"*"&($K$1)&"*");$L$1;SI(NB.SI(A4;"*"&($K$2)&"*");$L$2;SI(NB.SI(A4;"*"&($K$3)&"*");$L$3;SI(NB.SI(A4;"*"&($K$4)&"*");$L$4;SI(NB.SI(A4;"*"&($K$5)&"*");$L$5;SI(NB.SI(A4;"*"&($K$6)&"*");$L$6;SI(NB.SI(A4;"*"&($K$7)&"*");$L$7;"")))))))

tu crées la même formule avec la suite des données K8 L8 etc
d'après tes post tu devrais avoir 4 voire 4 formules. il ne reste plus qu'à les mettre en cascade (les coller dans une cellule) et les séparant du signe & voir en gras la relance

exemple
=SI(NB.SI(A4;"*"&($K$1)&"*");$L$1;SI(NB.SI(A4;"*"&($K$2)&"*");$L$2;SI(NB.SI(A4;"*"&($K$3)&"*");$L$3;SI(NB.SI(A4;"*"&($K$4)&"*");$L$4;SI(NB.SI(A4;"*"&($K$3)&"*");$L$3;SI(NB.SI(A4;"*"&($K$4)&"*");$L$4;SI(NB.SI(A4;"*"&($K$4)&"*");$L$4;"")))))))&SI(NB.SI(A4;"*"&($K$8)&"*");$L$8;SI(NB.SI(A4;"*"&($K$9)&"*");$L$9;SI(NB.SI(A4;"*"&($K$10)&"*");$L$10;SI(NB.SI(A4;"*"&($K$11)&"*");$L$11;SI(NB.SI(A4;"*"&($K$12)&"*");$L$12;SI(NB.SI(A4;"*"&($K$13)&"*");$L$13;SI(NB.SI(A4;"*"&($K$14)&"*");$L$14;"")))))))


et comme cela tu peux aller jusqu'à 40 conditions mais il est possible d'obtenir un nombre illimité de conditionnelles avec d'autres astuces

explication sur les imbrications voir l'astuce que j'ai développé sur ce lien
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
19 déc. 2013 à 11:21
Bonjour Mike,

Je vois que vous avez pris du temps pour me trouver une petite astuce, merci beaucoup ;)

Je dois avouer que j'ai un peu pris peur en voyant cette dernière formule, mais en y regardant de plus près, cela ne me paraissait plus insurmontable.

J'ai donc pris la formule, remplacé les K et les L, puis collé dans mon nouveau tableau.
Malheureusement excel me dit qu'il y a un une erreur dans la formule (sûrement dû à une erreur de ma part).

Voici la formule que j'ai collé dans mon nouveau tableau :

=SI(NB.SI(A1;"*"&($chapeau$1)&"*");$CHAPEAUX ET COIFFES$1;SI(NB.SI(A1;"*"&($perruque$2)&"*");$PERRUQUES$2;SI(NB.SI(A1;"*"&($lunette$3)&"*");$LUNETTES$3;SI(NB.SI(A1;"*"&($boa$4)&"*");$BOA ET PLUMES$4;SI(NB.SI(A1;"*"&($adulte$5)&"*");$COSTUMES ADULTES$5;SI(NB.SI(A1;"*"&($moustache$6)&"*");$MOUSTACHES ET BARBES$6;SI(NB.SI(A1;"*"&($enfant$7)&"*");$COSTUMES ENFANTS$7;"")))))))

J'ai fait apparaître en gras ce qu'excel surligne en me disant qu'il y a une erreur.

Pourriez-vous me dire où je me suis trompé ?

Merci d'avance (encore)
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
Modifié par Mike-31 le 19/12/2013 à 11:49
Re,

il faut retirer les dollars $ de chaque côté du mot et les guillemets, comme ceci "*chapeau*"
dans ma formule je faisais référence à une cellule contenant le critère c'est pour cela qu'il y avait "*"&$cellule$&"*"

pour ne pas te compliquer la vie, tu crées une imbrication de 6 ou 7 conditionnelles dans une cellule, puis dans une autre cellule tu crées une nouvelle imbrication qui prend la suite de la première imbrication puis dans une troisième cellule etc ...

reste plus qu"à copier chaque imbrication dans la même cellule en les séparant du symbole &

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Bizz69 Messages postés 7 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 19 décembre 2013
19 déc. 2013 à 14:39
C'est magique !
Je vois enfin le bout de mes 20 000 lignes !

Merci beaucoup pour votre aide !
Bonne journée
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
Modifié par Mike-31 le 19/12/2013 à 14:51
Re,

pour 20000 ligne cela doit faire un fichier assez lourd, il est certainement possible de l'alléger en nommant chaque imbrication. Contrôle la taille de départ de ton fichier

exemple tu vas dans définir un nom et tu saisis un nom pour ton premier champ exemple For_1 pour abréger Formule 1 et dans Fait référence à : colle la première imbrication concernant la première ligne
puis tu recrée un nouveau champ nommé For_2 dans lequel tu colles la deuxième imbrication, puis un troisième etc ...

sur ta première ligne à la place de ta première formule tu saisis = For_1+For_2+For_3 etc

puis tu incrémentes vers le bas et contrôle la taille de ton fichier cela devrait être significatif

je passe le statut de la discussion en résolu ce qui n'empêche pas de revenir sur la discussion pour un complément d'info

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0