Formule Excel

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 17 déc. 2008 à 00:42
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 18 déc. 2008 à 00:17
Salut,

Je sais que ce n'est pas du VBA, mais je sais aussi qu'il y a de bons excelleurs
Je suis confronté à un problème de formules sous Excel et préférerait ne pas passer par VBA.

J'ai une quantité X à distribuer parmi N cellules selon des pourcentages.
Si j'ai 40 cellules de pourcentages, leur total donne 100 %, même chose si je n'en ai que 30
Autre chose à savoir... ces pourcentages ne sont pas triés, ni triables...

On peut donc avoir
0.12 %
2.35 %
1.22 %
0.54 %
....

Et le plus important est que je dois récupérer des entiers seulement qui peuvent être 0 au besoin
Avec des arrondis simples, .SUP ou .INF, ça ne peut pas aller. Avec ENT ou MOD, ce n'est pas mieux
Peut-être avec des conditions incluant d'autres formules ou un mélange de tout ça ???

Quelqu'un aurait une idée géniale ?
En espérant que mon problème est compréhensible...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 déc. 2008 à 17:47
Salut MPi²,

si j'ai bien compris la deuxieme partie le resultat devrait etre :

0.12 % -> 0
2.35 % -> 2%
1.22 % -> 1%
0.54 % -> 0%

si c'est bien cela la fonction int() devrait parfaitement faire l'affaire puisque qu'elle ne prend que l'entier sans arrondir.

Pour la premiere partie sous quelles conditions ce fait la distribution ? si c'est aleatoire cela vas etre chaud !

A+
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 déc. 2008 à 00:17
Salut Bigfish_Le vrai,

Merci de t'être penché sur le problème.
Ça va probablement se terminer par une macro... ;)
C'est tellement plus simple que les formules quelquefois...

Pour clarifier un peu, voici un exemple bidon de données avec différents calculs.
On peut voir que ENT (ou INT en anglais) ou ARRONDI.INF sont identiques. Mais ça pourrait être différent (je pense) avec d'autres % et d'autres valeurs (?)

Ce qui se rapproche le plus, ici, c'est ARRONDI.
Mais dans certains scénarios que j'ai testés, le résultat d'un ARRONDI est complètement farfelu, donc pas plus avancé. Si j'arrive à un résultat qui s'approche de la quantité (ici 25), c'est pas si mal, on peut faire avec. Le résultat pourrait être 23 ou 28. Mais ça doit donner une valeur proche de façon constante, pas seulement sur une série de nombre...

<col style=\"width: 60pt;\" span=\"2\" width=\"80\" /><col style=\"width: 50pt;\" width=\"67\" /><col style=\"width: 59pt;\" span=\"3\" width=\"79\" />----
25, $A$1*A2, ENT, ARRONDI, ARRONDI.SUP, ARRONDI.INF, ----
14,0%, 3,5, 3, 4, 4, 3, ----
14,0%, 3,5, 3, 4, 4, 3, ----
13,0%, 3,25, 3, 3, 4, 3, ----
13,0%, 3,25, 3, 3, 4, 3, ----
12,0%, 3, 3, 3, 3, 3, ----
3,5%, 0,875, 0, 1, 1, 0, ----
3,5%, 0,875, 0, 1, 1, 0, ----
3,5%, 0,875, 0, 1, 1, 0, ----
3,5%, 0,875, 0, 1, 1, 0, ----
3,5%, 0,875, 0, 1, 1, 0, ----
3,00%, 0,75, 0, 1, 1, 0, ----
3,00%, 0,75, 0, 1, 1, 0, ----
3,00%, 0,75, 0, 1, 1, 0, ----
3,00%, 0,75, 0, 1, 1, 0, ----
3,00%, 0,75, 0, 1, 1, 0, ----
0,50%, 0,125, 0, 0, 1, 0, ----
0,50%, 0,125, 0, 0, 1, 0, ----
0,50%, 0,125, 0, 0, 1, 0, ----
, , , , , , ----
100,0%, 25, 15, 27, 32, 15

Et je sais qu'en triant, ce serait beaucoup plus simple, mais il y a plusieurs séries de pourcentages, côte-à-côte, et qui ne sont pas dans le même ordre croissant ou décroissant.

La quantité de pourcentages peut être différente d'une fois à l'autre, mais le total de ces pourcentages est toujours 100 %. Ces pourcentages ne sont pas triés comme ici. La quantité à distribuer est aussi aléatoire...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous