Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion JJ1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JJ1

Guest
Bonjour,

Je joins un tableau avec en colonne C des nombres et E des %, je ne me souviens plus de la formule Alea (EQUIV ?) qui permettait de favoriser certains nombres à chaque F9? Je ne sais pas s'il fallait aussi un % cumulé et je ne retrouve pas sur le Forum.

Merci de votre aide.
 

Pièces jointes

Re : Fonction Alea

Bonjour à tous,

J'ai une formule qui permet d'avoir des nombres aléatoires de 1 à 66 ( dans la formule ci-jointe et correspondant au nombre maxi de ton fichier) ( genre lancement d'un dé) !

Cela ne correspondant pas à ta demande mais peut faire avancer la recherche !

Code:
=ENT(1+66*ALEA())

bonne journée !
 
Re : Fonction Alea

Bonjour à tous.


Un essai...​


ℝOGER2327
#6990


Vendredi 20 As 141 (Saint Olibrius, augure - fête Suprême Quarte)
2 Frimaire An CCXXII, 4,8910h - turnep
2013-W47-5T11:44:18Z
 

Pièces jointes

Dernière édition:
Re : Fonction Alea

Bonjour à tous,

Une approche vba, sans doublons (sauf erreur).

Cordialement

KD

VB:
Option Explicit

Function AleaJJ(NbNu&, Plage As Range, Ordre As Byte, Optional Colonne) As Variant
    'nbNu = nb n° total
    'Plage sur 2 colonnes contenant 1 - les n° / 2 - les %
    'Ordre = Ordre du n° tiré, logique en ligne (évite doublons) ou - si option - en colonne
    Dim Ta#(), Tb#(), n&, i&, j As Byte, p#, b As Boolean, r&, m As Boolean, a&
    Application.Volatile
    n = Plage.Rows.Count: ReDim Ta(1 To n, 1)
    For i = 1 To n
        For j = 0 To 1
            Ta(i, j) = Cells(Plage.Row + i - 1, Plage.Column + j)
            If Ta(i, 0) > NbNu Then AleaJJ = CVErr(xlErrRef): Exit Function
        Next j
        p = p + Ta(i, 1)
    Next i
    If p > 1 Then AleaJJ = CVErr(xlErrRef): Exit Function
    ReDim Tb(1 To NbNu, 1)
    For i = 1 To n: Tb(Ta(i, 0), 0) = Ta(i, 1): Next i
    Erase Ta: p = (1 - p) / (NbNu - n)
    If Tb(1, 0) = 0 Then Tb(1, 0) = p
    Tb(1, 1) = Tb(1, 0)
    For i = 2 To NbNu
        If Tb(i, 0) = 0 Then Tb(i, 0) = p
        Tb(i, 1) = Tb(i - 1, 1) + Tb(i, 0)
    Next i
    Randomize: r = Application.Caller.Row: n = Application.Caller.Column: m = IsMissing(Colonne)
    Do
        p = Rnd
        For i = 1 To NbNu
            If Tb(i, 1) > p Then AleaJJ = i: Exit For
        Next i
        b = True
        For i = 2 To Ordre
            If m Then a = Cells(r, n + 1 - i) Else a = Cells(r + 1 - i, n)
            If AleaJJ = a Then b = False: Exit For
        Next i
    Loop Until b
End Function
 

Pièces jointes

Re : Fonction Alea

Bonjour à tous,

Merci à tous,
Je cherchais une formule équivalente à celle que Roger à faite- (le résultat serait-il aussi valable en pointant les % au lieu des % cumulés?)EQUIV(ALEA();$D$6:$D$19 au lieu de E

Merci aussi Ken dev mais la macro retourne parfois des numéros absents de ma liste en C ?

Bonne soirée
 
Re : Fonction Alea

Re,

En effet, comme le total de tes % avoisinait les 65% et ne totalisait pas 100%, j'ai considéré qu'il fallait attribuer à tous les manquants une probabilité égale (le % manquant répartit sur les n° manquants).

Ma fonction du coup répond à cette problématique :

_ Tirer au sort 1 n° parmi N (le 1er paramètre).
_ Dont certains n° ont une probabilité imposée selon la plage en deux colonnes, n° concernés et prob associées (le 2ème paramètre), les autres n° étant équiprobables.
_ pas de doublons (préciser l'ordre du n° en troisième paramètre et, en option, choisir une présentation en colonne plutôt qu'en ligne).

En résumé c'est une fonction de combinaison aléatoire pour loterie avec favoris/délaissés.

Roger a lui correctement interprété ta demande.

Cordialement

KD
 
Re : Fonction Alea

Re,
Roger a lui correctement interprété ta demande.
KD

Bonsoir,

A ROGER :

Bravo ROGER, la classe à l'état pur !

Il faut être matheux pour créer de telles macros !

Encore une fois, dés que je suis sure downloads, je sauvegarde ses fichiers afin d'approfondir dans la mesure du possible, mes connaissances !

bonne soirée à tous et Merci ROGER !
 
Re : Fonction Alea

Bonjour à tous,

et merci. Le fichier de Roger comporte pas moins de 8 onglets! merci pour toutes ces variantes.

Par contre je n'ai pas eu ma réponse (différence entre aléa /% et alea / % cumulé, ça change quoi?)

A+
 
Re : Fonction Alea

Re...


(...) je n'ai pas eu ma réponse (différence entre aléa /% et alea / % cumulé, ça change quoi?)
(...)
Dans toutes les variantes, j'utilise la méthode que vous appelez "alea / % cumulé". Voyez une explication de la méthode dans le classeur joint.

(Que les puristes me pardonnent la présentation intuitive et simpliste de la chose...)


Bonne journée.


ℝOGER2327
#6995


Samedi 21 As 141 (Saint Possible, schizophrène - fête Suprême Quarte)
3 Frimaire An CCXXII, 4,3401h - chicorée
2013-W47-6T10:24:58Z
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
700
  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
223
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…