Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 créer une serie aleatoire sans doublons sans matrice(plage de cellule)par formule

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 !

patricktoulon

XLDnaute Barbatruc
bonsoir à tous
punaise je me bat avec chatGPT pour trouver comment se servir de alea.entre.bornes ou autre pour créer une serie aleatoire sans doublons


si vous avez des idées allez y bombardez
😉
 
Bonsoir.
J'ai ça :
VB:
Option Explicit
Private HDernUti As Date, TN°() As Long, GrnPréc As Double
Public Function Hasard(ByVal Rang As Long, ByVal Donné, Optional ByVal Graine As Double) As Variant
Rem. ——— Renvoie dans une cellule une information choisie aléatoirement d'une plage.
'  Arguments :
'     Rang:   Rang dans la permutation du numéro souhaité.
'     Donné:  Deux possibilités :
'        1) — Une expression du numéro le plus élevé, la fonction en renvoyant un de 1 à Donné.
'        2) — Une plage d'une colonne contenant les valeurs possibles, la fonction renvoyant l'une d'elles.
'     Graine: Base de départ de la série. Si omis l'ordre des numéros sera différent à chaque évaluation.
'  Principe important: Cette fonction étant conçue pour une validation normale, non matricielle,
'     elle construit un tableau sur lequel elle se base, ensuite, à chaque invocation,
'     tant qu'il est récent de moins d'une seconde depuis sa dernière utilisation.
   Dim RngDon As Range, LMax As Long, L As Long, P As Long
   If TypeOf Donné Is Range Then
      Set RngDon = Donné: LMax = RngDon.Rows.Count
   ElseIf IsNumeric(Donné) Then
      LMax = Donné
   Else: Hasard = CVErr(xlErrValue): Exit Function: End If
   On Error Resume Next: L = UBound(TN°): On Error GoTo 0
   If Now - HDernUti > 1 / 86400 Or LMax <> L Or Graine <> GrnPréc Then
      ReDim TN°(1 To LMax): TN°(1) = 1
      If Graine <= 0 Then Randomize Else Rnd -1: Randomize Graine
      For L = 2 To LMax: P = Int(Rnd * L) + 1: If P < L Then TN°(L) = TN°(P)
         TN°(P) = L: Next L
      GrnPréc = Graine: End If
   On Error Resume Next: L = TN°(Rang): On Error GoTo 0
   If Err Then
      Hasard = IIf(RngDon Is Nothing, 0, "")
   ElseIf RngDon Is Nothing Then: Hasard = L
   Else: Hasard = RngDon(L, 1).Value: End If
   HDernUti = Now
   End Function
 
bonsoir @Dranreb
bien que j’apprécie me régaler de tes codes parfois abscons mais toujours intéressants
ici pour le faire en vba j'ai beaucoup plus simple
mais le titre de ma question est bien par formule
c'est un challenge en fait
trouver une formule qui me permettrais de créer une série ou une matrice aléatoire sans plage de cellules(avec des nombres) de référence
et si possible compatible 2013
 
C'est bien par formule utilisant une fonction personnalisée. C'était interdit ? Pas précisé ! Je croyais que le "ou autre" les incluait … Ce qui était bien clair c'est qu'elle devait pouvoir être utilisé dans un tableau Excel, lequel interdit les formules matricielles.
Par fonctions de base je ne sais vraiment pas faire.
 
re
t' en fait pas même chatGPT je le rend fou 😂 😂 😂

il fini par me donner des formules moitié en français moitié en anglais 😂😂😂😂

ça vaut le détour voir le lien en post 1

punaise je me marre avec ce truc

il y a bien un moyen de modifier ceci:
formule en b1 etendu a b10
=INDEX(LIGNE(A1:A10);ALEA.ENTRE.BORNES(1;10))
avec un truc du genre nb.si ou nbval ou equiv dans la colonne "$b$1:b1"
 
Bonjour à tous,
En fouinant, j'ai pu trouver ça, en A2 et à recopier jusqu'à A11 :
VB:
=AGREGAT(14;4;LIGNE($1:$10)*NON(NB.SI($A$1:A1; LIGNE($1:$10))); ALEA.ENTRE.BORNES(1;LIGNES($1:$10)+1-LIGNE(A1)))
Pas facile à modifier mais ça semble fonctionner sans doublon, c'est le LIGNE($1:$10) qui donne les bornes
Si ça peut aider
Cordialement
 
Dernière édition:
- 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

Discussions similaires

Réponses
3
Affichages
634
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…