XL 2019 alea entre bornes avec exception

Akafal50

XLDnaute Nouveau
Bonsoir les amis
je souhaite generer une liste aléatoire entre bornes, avec la possibilité d'exclure un chiffre au regard des chiffres de la colonne de gauche.
dans l'exemple que je joins, je ne souhaite pas que le 6 de la collone "base" revienne dans le resultat.
Merci pour votre assistance
 

Pièces jointes

  • question forum alea entre bornes avec exception.xlsx
    9 KB · Affichages: 10

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Akafal50 :),

dans l'exemple que je joins, je ne souhaite pas que le 6 de la collone "base" revienne dans le resultat.
Pour moi votre explication n'est pas claire :
  • voulez-vous dire que la valeur de la colonne E (résultat du calcul) doit être différente de la valeur de la même ligne colonne D ?
  • ou bien alors, vous avez choisi cette valeur 6 et elle doit être absente de toutes les valeurs de la colonne E ?
  • ou bien encore autre chose ?
Pourquoi la formule de la première ligne est différente des autres formule ?
 
Dernière édition:

Gégé-45550

XLDnaute Accro
Bonsoir les amis
je souhaite generer une liste aléatoire entre bornes, avec la possibilité d'exclure un chiffre au regard des chiffres de la colonne de gauche.
dans l'exemple que je joins, je ne souhaite pas que le 6 de la collone "base" revienne dans le resultat.
Merci pour votre assistance
Bonsoir,
avec une fonction perso à insérer dans un module :
VB:
Function AleaSauf&(bInf&, bSup&, Exclude&)
Dim a&, continue as Boolean
    Do
        a = Application.WorksheetFunction.RandBetween(bInf, bSup)
        If a = Exclude Then continue = True Else continue = False
    Loop Until continue = False
    AleaSauf = a
End Function
puis dans n'importe quelle cellule :
Code:
=AleaSauf(1;25;6)
Cordialement,
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour bonjour
le reveillon pour certains a été très rude à mon avis 🤣
1703748093697.png
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Pour les deux cas cités dans le message #2 .
Via une formule en E9 qui est recopiée 1999 fois vers le bas soit 2 000 formules en tout.
Frapper la touche de fonction F9 pour relancer un tirage.

Premier cas : la valeur de la colonne E (résultat du calcul) doit être différente de la valeur de la même ligne de la colonne D. La formule en D9 est :
=SI(D9=1;ALEA.ENTRE.BORNES(2;25);SI(D9=25;ALEA.ENTRE.BORNES(1;24);SI(ALEA.ENTRE.BORNES(1;24)<=D9;ALEA.ENTRE.BORNES(1;D9-1);ALEA.ENTRE.BORNES(D9+1;25))))


Deuxième cas : la valeur de la colonne E (résultat du calcul) doit toujours être différente de la valeur 6. La formule en D9 est :
=SI(ALEA.ENTRE.BORNES(1;24)<6;ALEA.ENTRE.BORNES(1;5);ALEA.ENTRE.BORNES(7;25))

nota 1 : les nombres aléatoire sont entre 1 et 25
nota 2 : on a ajouté des colonnes de vérification.
 

Pièces jointes

  • Akafal50- alea entre bornes- v1.xlsx
    79.7 KB · Affichages: 1
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Rappel: mon objet ListeAléat supporte une liste de numéros allant de 1 à un maximum spécifié, en ordre aléatoire et sans doublon. Elle est aussi munie d'une méthode Supprimer permettant comme son nom l'indique d'en supprimer.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
@patricktoulon (bonjour à toi :))

car j'ai testé tout a l'heure 2 alea entre bornes lancé peuvent donner le même nombre

Bien sûr et alors ? Il n'est pas dit par le demandeur que les valeurs de la colonne E doivent être différentes entre-elles. Je réponds à la question posée :cool:. Si elle est mal posée, je n'y peux rien 🤨.

nota : et en plus, je me suis fendu de deux interprétations !
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @patricktoulon,

J'explique mes formule en espérant qu'au cours de mes explications je ne découvre pas "un gros loup" !

Cas n° 1 : sur une même ligne D et E doivent être différents
=SI(D9=1;ALEA.ENTRE.BORNES(2;25);SI(D9=25;ALEA.ENTRE.BORNES(1;24);SI(ALEA.ENTRE.BORNES(1;24)<=D9;ALEA.ENTRE.BORNES(1;D9-1);ALEA.ENTRE.BORNES(D9+1;25))))

  • Si D9 = 1, on retourne un nombre aléatoire entre 2 et 24 (donc forcément diff. de 1)
  • Si D9 = 25, on retourne un nombre aléatoire entre 1 et 24 (donc forcément diff. de 25)
sinon on calcule un nombre aléatoire X entre 1 et 24
  • si X est inférieur à D9, on retourne un nombre aléatoire entre 1 et (D9-1) (donc forcément diff. de D9)
  • si X est supérieur à D9, on retourne un nombre aléatoire entre (D9+1) et 25 (donc forcément diff. de D9)
A priori, la formule ne retournera jamais D9.

Cas n° 2 : jamais la valeur 6
=SI(ALEA.ENTRE.BORNES(1;24)<6;ALEA.ENTRE.BORNES(1;5);ALEA.ENTRE.BORNES(7;25))


On calcule un nombre Z entre 1 et 24
  • si Z est inférieur à 6, on retourne un nombre aléatoire entre 1 et 5 (donc forcément diff. de 6)
  • si Z est supérieur à 6, on retourne un nombre aléatoire entre 7 et 25 (donc forcément diff. de 6)
A priori, la formule ne retournera jamais 6.

Est-ce correct 🤨 ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
en fait, je veux que la valeur de la colonne E (résultat du calcul) soit différente de la valeur de la même ligne colonne D ?
La formule pour le cas 1 doit répondre à votre souhait (enfin je crois ;)) :
=SI(D9=1;ALEA.ENTRE.BORNES(2;25);SI(D9=25;ALEA.ENTRE.BORNES(1;24);SI(ALEA.ENTRE.BORNES(1;24)<=D9;ALEA.ENTRE.BORNES(1;D9-1);ALEA.ENTRE.BORNES(D9+1;25))))
 

Pièces jointes

  • Akafal50- alea entre bornes- v1.xlsx
    79.8 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
@mapomme
ha 🤩ben ca va tout de suite mieux avec des explications
ce qui m'a perdu c'est ce qui est entouré
je me suis dit "pourquoi recommence t il si c'est bon ?
1703762197256.png


que pense tu de celle ci
Code:
=SI(ALEA.ENTRE.BORNES(SI(D2=1;2;1);  SI(D2=25;24;25))>D2;ALEA.ENTRE.BORNES(D2+1;SI(D2=25;24;25));ALEA.ENTRE.BORNES(SI(D2=1;2;1);  D2-1))
 

Discussions similaires

Réponses
7
Affichages
695

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 677
dernier inscrit
Justine11