Générer somme aléatoire entre 2 nombres

Signaler
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020
-
Messages postés
2126
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 septembre 2020
-
Bonjour à tous
Je travail avec Excel 2003FR
J'ai déjà du activer "utilitaire d'analyse" dans "macro complémentaire" croyant pouvoir effectuer mon calcul avec fx-aléatoire-ALEA.ENTRE.BORNES
Mais ce ne doit pas être cette formule qui va bien...
je souhaite créer entre 2 nombres des sommes aléatoires comprises entre 8 à 20 mais toujours en augmentation mais aléatoirement concernant le montant.
Mon problème est le suivant :
Entre 2 nombres, soit entre 200 et 1000, sur x cellules comment créer pour chaque cellules une somme qui va en augmentant de 8 à 20?
Pour compliquer bien sur je souhaite que ces sommes augmentent mais pas de façon croissante logique, d'où le aléatoirement pour une cellule, soit de 12 puis de 9 puis de 17 puis de 8 (chiffres pris au hasard) peux importe.
Merci de votre aide

16 réponses

Messages postés
52285
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
20 septembre 2020
14 074
Bonsoir.
Je dois avouer que je n'ai pas compris grand-chose à ton laïus ... 
En effet tu veux des nombres aléatoires tantôt entre 8 et 20, tantôt entre 200 et 1000 !
Et j'ai bien peur que ce que tu appelles "somme" (addition, pour Excel), c'est en réalité "valeur" ...
Pourrais-tu envoyer un fichier Excel avec des exemples de ce que ton tableau devrait proposer ?
 1) Tu vas dans http://cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche http://www.commentcamarche.net/faq/29493-utiliser-cjoint
Il existe aussi :
1) https://mon-partage.fr/
2) https://www.transfernow.net/
Messages postés
2126
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 septembre 2020
281
Bonjour,

D'après ce que j'ai compris, réalisé en VBA
Sub Generateur()
    Dim Val_Min As Integer, Val_Max As Integer
    Dim Alea_Min As Integer, Alea_Max As Integer
    Dim Lig As Long, Somme As Long, Valeur As Long
    Application.ScreenUpdating = False
    Columns(1).ClearContents
    Val_Min = Range("D1").Value 'Valeur minimale de départ
    Val_Max = Range("E1").Value 'Valeur maximale à atteindre
    Alea_Min = Range("D4").Value 'Valeur aléatoire minimale
    Alea_Max = Range("E4").Value 'Valeur aléatoire maximale
    Range("B1").Value = Val_Min
    Lig = 1
    Somme = Val_Min
    Randomize
    Do
        Lig = Lig + 1
        Valeur = Int((Alea_Max - Alea_Min + 1) * Rnd) + Alea_Min
        Somme = Somme + Valeur
        Cells(Lig, "B").Value = Somme
        Cells(Lig, "A").Value = Valeur
    Loop While Cells(Lig, "B") < Val_Max
    If Cells(Lig, "B") > Val_Max Then Cells(Lig, "B") = Val_Max
End Sub


Le fichier
https://mon-partage.fr/f/1W06tkd8/

Cdlt
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Bonjour à tous et merci pour votre aide
@ Raymond
Je vais essayer d’être plus clair…
C’est pour un jeu de hasard qui a pour montant minimum 200 et maximum 1000
Tant que le montant n’a pas été découvert, celui-ci va augmenter aléatoirement d’un montant compris entre plus 8 minimum et plus 20 maximum
En exemple je souhaite cela :
Fichier Excel, en A1=200 en A2=214 en A3=231 en A4=240 en A5=248 ect…
D’où des sommes qui augment aléatoirement
Je souhaite pouvoir automatiser le classement
Je désir effectuer cela sur environ +/- 60 cellules.
Ci dessous une idée de ma demande.

https://www.cjoint.com/c/JHFimTKNdZF

@frenchie83
C'est quelque chose comme ton fichier que je souhaite
La procédure que tu explique s dans ton message c'est du charabia pour moi...
Dans ton fichier je ne peux pas accéder a ton générateur, moi je suis avec excel 2003 et ton fichier semble d'un Excel plus récent et ça me dit "macro désactivée" etc...

Je ne maîtrise pas grand chose avec excel, un peu nul de chez nul, bref il me faut un truc simple...
cdlt
Messages postés
2126
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 septembre 2020
281
Pour activer les macros, reproduire ceci


Pour voir le code, faire ALT + F11

Je vous ai proposé une solution par macro plutôt que par formules car je voulais que la première et la dernière valeur soient égales au min et au max, sinon utilisez la formule de ccm81 (salut)

Cdlt
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
Bonjour à tous

En C16 essaies
=C15+8+ENT(13*ALEA())
à tirer vers le bas

Cdlmnt
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
et si c'est en VBA (pour figer les valeurs)
Range("C16").Value = int(8+13*rnd)

Cdlmnt
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

@Frenchie83
trop compliqué pour moi...
Merci

@ccm81
top top top c'est exactement ça
La première solution je pense avoir compris
VBA pas pour moi c'est du charabia!!!
Une petite précision est-ce que c'est possible d'être vraiment entre les sommes 200 et 1000
Car quand je tire vers le bas j'arrive par exemple à 994, puis 1009, puis 1017, si j'efface 1017 et 1009 je retombe à 987!!!
Pour atteindre 1000 en partant de 200 et avec ta formule je suis sur 57 cellules.
Si je veux faire sur moins de cellules ou sur plus de cellules il me faut modifier quoi?
Cdt
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
En C16
=SI(OU(C15=1000;C14="");"";SI(C15+20 < 1000;C15+8+ENT(13*ALEA());1000))
https://www.cjoint.com/c/JHFmpOIPvYB

Le pb, c'est que à chaque changement dans la feuille, les formules seront recalculées. Pour figer les valeurs, il faut passer par vba
J'ai aussi Excel 2003, si tu penses que les macros (vba) sont nécessaires, tu dis, ce n'est pas la mer à boire

Cdlmnt
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Houlla je patauge...
Pour les macros (vba)je ne connaît pas.
Le fait que les valeurs soient recalculées ce n'est pas un problème et c'est même mieux pour ce que je veux faire. Ça va éviter les répétitions logique sur le long terme.
Donc on va reste simple...
Ne tiens plus compte du fichier de départ que j'ai mis en pièce jointe.
Je ne comprend pas comment appliquer ta formule pour une cellule donnée.
Peux-tu me mettre la formule pour : je doit démarrer en E6 à 200...
Parce que si j'applique à ma feuille en E5 et E4 je n'ai pas de montant!!!
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
Tu as 200 en E6
Formule (un peu différente) en E7
=SI(OU(E6=1000;E6="");"";SI(E6+8+ENT(13*ALEA())>1000;1000;E6+8+ENT(13*ALEA())))
https://www.cjoint.com/c/JHFnGspVReB

Cdlmnt
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Oups j'ai oublier le fichier

https://www.cjoint.com/c/JHFnMIby7nF

Cdt
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

C'est super top.
Je progresse et je te suis...
Bon si je l'applique a mon fichier (celui du dernier message juste au dessus)
J'arrive à 1000 au jeudi 24 case C (cellule E59)
Alors que je souhaite arrive à 1000 mercredi 30 case C (cellule E71)
Messages postés
9559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 septembre 2020
1 899
Donc on va reste simple...
C'est raré ;-)
Alors que je souhaite arrive à 1000 mercredi 30 case C (cellule E71)
Avec cette contrainte, je ne vois pas de solution hors macro (vba)

https://www.cjoint.com/c/JHFssuPGSKB

Cdlmnt
Messages postés
52285
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
20 septembre 2020
14 074
Dans ton post #3 tu écris
"C'est pour un jeu de hasard ...
Je ne maîtrise pas grand chose avec excel, un peu nul de chez nul, bref il me faut un truc simple ..."


Il faut savoir que les jeux sont plus difficiles à gérer sur Excel que tous les autres types de problèmes !
Messages postés
2126
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 septembre 2020
281
Bonjour à tous,

En plus de ce que viennent de dire Raymond PENTIER et ccm81 que je salue, ce que vous demandez est impossible à faire simplement. Vous voulez trouver des valeurs aléatoires qui viennent se cumuler à une valeur de départ (ici 200) pour arriver à une valeur de fin(ici 1000) mais en plus avec une nombre de cellules déterminées et de surcroit, variable en fonction du mois sélectionné. L'aléatoire et le figé ne font pas bon ménage.

Pour résoudre votre problème, il faut déterminé à l'avance le nombre de valeurs à trouver (variable selon le mois), et appliquer cela pour trouver un total de 800 (1000-200).

J'ai donc préparé manuellement un tableau qui, pour chaque valeur et en fonction du nombre de jours dans le mois, attribue une quantité de valeurs maximum disponible, et cela pour que la somme totale des valeurs multipliée par leur nombre respectif donne 800.

Lorsque vous cliquez sur le bouton "Générateur", la partie du tableau correspondant au mois sélectionné vient se coller dans la plage de cellules "H6:H20", puis commence à chercher une valeur de façon aléatoire, pour chaque valeur trouvée, la quantité dans la plage H indiquant le nombre de possibilité à trouver pour cette valeur est décrémentée de 1, et ainsi de suite pour jusqu'à la fin.
Si une valeur aléatoire est trouvée mais que sa quantité restante en "H" est égale à 0 (on a épuisé le nombre de valeurs disponibles pour cette valeur) alors on relance la fonction aléatoire pour en trouver une autre de disponible.

Une vue de la feuille


Le fichier
https://mon-partage.fr/f/ZchjS6ZV/

Ne soyez pas réticent aux macros, faites un minimum d'effort et suivez la procédure que j'ai donné plus haut (4 clics de souris pour que votre Excel puisse lire les macros).

Une fois que vous aurez fait cela, la seule chose que vous aurez à faire c'est d'appuyer sur le bouton "Générateur"

Cdlt
Messages postés
7
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Bonjour à tous et un grand merci pour votre aide.
Je vais télécharger tout cela et essayer de comprendre...

@Frenchie83 pour les macros j'ai accepté, ce n'est pas un manque d'effort de ma part, la procédure que tu a mis à disposition en vidéo je ne l'ai pas comprise...
La vidéo va trop vite pour moi, de plus je suis avec Excel 2003 qui a une présentation différente, bref j'ai pas bien capté, désolé.
D’après ce que tu écris tu as fais une simulation avec les différent mois.
Alors la je dis super top...

@ccm81 +++++ j'ai juste survolé et j'ai pus activé les macros, mon souci auparavant été que je ne savais pas quelle option choisir, la c'est clair avec les mêmes fenêtres que moi...

Cdt
Messages postés
2126
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 septembre 2020
281
Essayez ceci:
Pour activer les macros sous excel 2003:
menu Excel -> Outils > Macros > Sécurité > cocher niveau sécurité moyen.

Si vous ne vous en sortez pas, faites une recherche sur le Net, il y a plein de tutos