[Excel] Fonction Aléa sans macro

Fermé
Basil - 13 oct. 2006 à 09:58
 Basil - 13 oct. 2006 à 12:52
Bonjour,

Je me retrouve face à un problème sur Excel.

Je voudrais que la somme de cinq chiffres aléatoires soient égale à n connu.

Par exemple si je dis 5, excel génère 1+1+1+2+0
ou 1+0.5+1.5+0+2

Enfin bref.

J'ai essayé sans VB ne maitrisant pas du tout le code, mais je me suis vite retrouver coincé avec la fonction aléatoire en ne pouvant générer des nombres que dans un intervalle donné.

Je serais très reconnaissant si l'un de vous avait une solution dans excel ou si vous aviez un code VB à me proposer que je pourrais personnaliser très facilement.


Merci pour votre aide


Basil
A voir également:

3 réponses

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
13 oct. 2006 à 11:20
Bonjour,

si tu as une solution sous excel, tu peux la transposer dans VBA en utilisant la fonction Evaluate( ).

regarde dans l'aide pour voir comment elle fonctionne.

il faut cependant transformer ta formule en anglais avec les séparateurs de liste et décimaux qui vont bien.

cette transformation en anglais se fait automatiquement par la manip suivante :
1) insère un onglet Macro Intl MS Excel 4.0 par un clic droit/insérer sur un onglet quelconque
2) copie/colle ta formule dans cet onglet
3) récupère dans la zone d'édition ta formule traduite en anglais

exemple :
la formule =RECHERCHEV(2,123;$L$10:$N$14;2;FAUX) devient =VLOOKUP(2.123,$L$10:$N$14,2,FALSE)

en vba, si tu mets
aa = Evaluate("VLOOKUP(2.123,$L$10:$N$14,2,FALSE)")
ou
bb = [VLOOKUP(2.123,$L$10:$N$14,2,FALSE)]
tu obtiens le résultat que tu avais dans ta feuille de calcul.

Donc tu remplaces recherchev( ) par tes formules de feuille de calcul et tu auras ton résultat.

cordialement
1
phunk Messages postés 498 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 30 novembre 2006 193
13 oct. 2006 à 11:57
Salut, vite fait uniquement avec Excel :

A1 = la valeur que tu veux (ici 5)
B1 = ARRONDI(ALEA()*A1;2)
C1 = ARRONDI(ALEA()*(A1-B1);2)
D1 = ARRONDI(ALEA()*(A1-B1-C1);2)
E1 = ARRONDI(ALEA()*(A1-B1-C1-D1);2)
F1 = A1-(B1+C1+D1+E1)

Appuies sur F9 chaque fois que tu veux actualiser.
Exemple : 10 = 1.93 + 3.29 + 0.35 + 2.56 + 1.87
Ici j'ai limité à 2 décimales..
1
Merci à tous les deux. Je retiens la solution de Phunk, elle va m'aider énormément.


Merci beaucoup
0