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

oscar199788 Messages postés 7 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
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

  1. Raymond PENTIER Messages postés 58226 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    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 https://www.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 https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
    Il existe aussi :
    1) https://mon-partage.fr/
    2) https://www.transfernow.net/
    0
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    0
  3. oscar199788 Messages postés 7 Statut Membre
     
    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
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      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
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

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

    Cdlmnt
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      et si c'est en VBA (pour figer les valeurs)
      Range("C16").Value = int(8+13*rnd)

      Cdlmnt
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. oscar199788 Messages postés 7 Statut Membre
     
    @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
    0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  8. oscar199788 Messages postés 7 Statut Membre
     
    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!!!
    0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Voilà

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

    Cdlmnt
    0
  11. oscar199788 Messages postés 7 Statut Membre
     
    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)
    0
  12. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  13. Raymond PENTIER Messages postés 58226 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    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 !
    0
  14. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    0
  15. oscar199788 Messages postés 7 Statut Membre
     
    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
    0
  16. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    0