créer 17 000 000 de codes aléatoires et dédoublonnés

  • Initiateur de la discussion Initiateur de la discussion creapoline
  • 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 !

C

creapoline

Guest
Bonjour,

j'ai un gros dilème ce soir, je dois créer un fichier de 17 000 000 de codes aléatoires (8 chiffres et 1 lettre ex : 12845627A) sous excel 2003.
Et en plus les déboublonner!

est ce possible?

si oui comment faire etant donné que je n'ai que 65 536 ligne sous 2003!

Je réflechis mais je vois aps trop comment faire...merci pour votre aide!
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re


Excel me dit:
=FACT(10)=3 628 800
=COMBIN(10;8)=45
=PERMUTATION(10;8)=1 814 400

Donc ceci ne concerne que les nombres contenant jusqu'à 10 caractères c'est cela ?

PS:
C'est à dire de 00000000 à 99999999 ce qui fait 100000000 combinaisons
Je n'arive pas à trouver ce 100 000 000 en utilisant COMBIN FACT ou PERMUTATION

Où est mon erreur ?
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour,

Je ne suis pas certain qu'il faille utiliser ces fonctions pour parvenir aux 100 000 000 de combinaisons.

Le plus grand nombre qu'on puisse écrire avec 8 chiffres est de 99 999 999. En ajoutant le 0, on parvient bien à 100 000 000.

Après, en ce qui concerne les statistiques, il s'agit d'une branche des mathématiques qui m'a toujours parue un peu hermétique du temps de mes études (lointaines maintenant).

@+
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Si tu t'autorises les chiffres de 0 à 9 et que tu veux un nombre de 3 chiffres, combien as-tu de possibilités ?
pour le 1 chiffre : 10 (0 à 9)
pour le 2nd chiffre : 10
pour le 3ème chiffre : 10
ce qui fait au total 10^3 ou 10x10x10 possibilités, c'est à dire 1000 : de 000 à 999

Et je poursuis mon raisonnement de 8h20 sur les temps de génération : est-ce que ça vaut le coup de perdre du temps à faire un tirage aléatoire ?
Pourquoi ne pas s'imposer les nombres de 10000000 à 77999999 avec 25 lettres sur 2 feuilles de 250 colonnes par 34000 lignes et permuter chaque cellule de feuil1 avec une cellule au hasard de feuil2 ce qui donnerait 2 sous-ensembles aléatoires (?)

Bon aller, je vais au boulot. Je commence à 8h45 et je vais finir par être en retard ;-)

eric
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour à tous

J'apporte un petit grain de sable de mon expérience personnelle :

Est-ce que la lettre ne serait pas une CLEF d'identification ? Utilisée pour éviter des erreurs de saisie :
Ex : Si le code 12345678A est valide. 12345678B n'est pas valide. Si je fais une erreur :12345679A c'est pas valide non plus. Ce qui permet de s'affranchir de pas mal d'erreur de saisie.

Donc si tel est le cas : outch !

Pour les STAPLE :
Combinatoire - Wikipédia
Partie Arrangements avec répétition
Nous remisons les éléments (on peut avoir plusieur fois chaque nombre)
L'ordre est important.
Cela donne n^k avec n = 10 éléments, k = 8 tirage par arangements


Olivier
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour

Ma modeste pierre

Voici un tirage (liste) de code Sans doublon et trié
Bien sur pour l'aléatoire il faut vite le dire mais qui peut dire que ces codes ne peuvent pas être sortis avec Rnd

C'est juste pour m'amuser

VB:
 Option Explicit

Sub Makro()
Dim Col_Dep As Integer
Dim Lig_Dep As Double
Dim I As Double
Dim J  As Integer
Dim T As Double
Dim Lettre As Byte
Dim Mini As Double
Dim Maxi As Double
  T = Timer
  Application.ScreenUpdating = False
  Col_Dep = 1
  Lettre = 65
  Mini = 10000000
  
  For Col_Dep = 1 To 256
    Lig_Dep = 1
    Maxi = Mini + 65535
    For I = Mini To Maxi
      Cells(Lig_Dep, Col_Dep) = I & Chr(Lettre)
      Lig_Dep = Lig_Dep + 1
      Lettre = Lettre + 1
      If Lettre > 90 Then Lettre = 65
    Next I
    Mini = Maxi + 1
  Next Col_Dep
  MsgBox "Temps :" & Timer - T
End Sub
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re


Merci pour le lien , Odesta
(j'avais déjà lu cette page
Mais dans mon cas, lire , je sais faire
Mais comprendre c'est une autre paire de manche 😱 )

Donc : =PUISSANCE(10;8) = 100 000 000 (ok)

Mais cela n'inclut pas la lettre en dernière position
et si je fais 😛UISSANCE(10;9)
ce n'est pas suffisant car il y a 26 lettres.

PS: désolé de trainer ces lacunes en mathématiques.
 
Dernière édition:
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re


Merci pour le lien , Odesta
(j'avais déjà lu cette page
Mais dans mon cas, lire , je sais faire
Mais comprendre c'est une autre paire de manche 😱 )

Donc : =PUISSANCE(10;8) = 100 000 000 (ok)

Mais cela n'inclut pas la lettre en dernière position
et si je fais 😛UISSANCE(10;9)
ce n'est pas suffisant car il y a 26 lettres.

PS: désolé de trainer ses lacunes en mathématiques.

Bonjour à tous,

peut être ceci :
Code:
=PUISSANCE(10;8)*26

bon après midi
@+
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re

Merci Pierrot 93

Je vais devoir retourner au collège 😱

et changer de lunettes car eriiiic m'avait répondu à 8h20
mais j'avais pas percuté que
100000000*26=2.6 milliards de combinaisons
peut aussi s'écrire
=PUISSANCE(10;8)*26

Merci à tous d'avoir éclairé ma lanterne, et d'avoir mis en lumière mes lacunes.
(et désolé pour le dérangement, en espérant que mes manques auront été bénéfiques à creapoline)
 
Dernière édition:
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour a tous

Dans le même esprit que Banzai j'ai pu obtenir 17 000 000 de cose a 8 chiffres + une lettre avec la macro suivante (qui a tourné chez moi en 12 minutes 30 secondes)
Pour l'aleatoire:
Comme je n'imagine pas que l'on puisse avoir besoin simultanement des 17 000 000 de code ,il suffira de prevoir un prelevement aleatoire dans les 2 feuilles necessaires

VB:
Sub test()
debut = Timer
Application.ScreenUpdating = False
ligne = 1
col = 1
code = 65
For n = 10000000 To 13500000
Sheets("Feuil1").Cells(ligne, col) = n & Chr(code)
ligne = ligne + 1
code = code + 1
If code > 90 Then
code = 65
End If
If ligne = 65536 Then
ligne = 1
col = col + 1
End If
Next n
ligne = 1
col = 1
code = 65
For n = 13500001 To 27000000
Sheets("Feuil2").Cells(ligne, col) = n & Chr(code)
ligne = ligne + 1
code = code + 1
If code > 90 Then
code = 65
End If
If ligne = 65536 Then
ligne = 1
col = col + 1
End If
Next n
Application.ScreenUpdating = True
MsgBox (Timer - debut)
End Sub

PS: Je preconise de lancer la macro avec Excel seul a l'exclusion de tout autre logiciel
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour ou re.

Il faut forcement l'aléatoire, car nous cherchons 17M de combi sur 100M (si comme je le demandais, la lettre est une clé) ou 2,6 Millard. Et pas seulement une liste des 17 premiers millions.

par contre, pour éviter un temps de traitement trop long à dédoublonner, on pourrait partir sur un pseudo aléatoire, qui serait relativement satisfaisant en découpant les 100M ou 2,6milliard en 17million de liste de nombre où l'on choisirait aléatoirement à l'intérieur un nombre :

Exemple à adapter
VB:
valeur_ecart = 2600 / 17

For i = 1 To 100
val_min = valeur_ecart * (i - 1)
val_max = valeur_ecart * i
lettre = Chr(Int(Rnd() * 26) + 65)
valeur = Int(Int(Rnd() * valeur_ecart) + val_min)
Cells(i, 1).Value = Format(valeur, "00000000") & lettre
Next i

(cette solution n'est pas compltement alétoire, mais donne à mon avis un résultat proche d'une tirage parfaitement aléatoire)

Olivier
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re

@ Odesta 🙂 🙄

Je ne suis pas (trop) froissé (si ce n'est par l'age)
Il est tellement frequent que je travaille sur un probleme sans avoir toutes les conditions au depart que voir apparaitre une contrainte nouvelle m'a un peu titillé

Ceci etant dit
On pourrait peut-etre voir la chose sous un autre angle:
Si l'on n'a pas l'utilité immediate des 17 M codes il est tout a fait possible d'envisager la procedure suivante
Besoin de 100 codes
Fabrication (avec clé eventuelle mais calcul a definir)
Stockage
Besoin de 150 codes
Fabrication avec controle de non doublon avec les 100 precedents stockés
Stockage
etc..
les problemes de temps de fabrication n'interviendront (et encore moderement ) que lorsque lon en sera a 16 M

En attendant de plus amples definitions des besoins
 
Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Re

Dans cet esprit voila un fichier qui permet d'avoir a la demande le nombre souhaité de codes aleatoires (8 chiffres et une lettre)
Naturellement les temps d'executions croissent au fur et a mesure du remplissage
A titre d'exemple pour des séries successives de 70000 codes
1ere 3,5 sec
2eme 6 sec
3eme 9,4 sec
4eme 13,9 sec
 

Pièces jointes

Re : créer 17 000 000 de codes aléatoires et dédoublonnés

Bonjour à tous.

Réponse à ta question au sujet des maths, Staple1600. J'ai rafraîchi ma mémoire sur Internet, il s'agit bien d'un arrangement de 8 éléments parmi 10 (un chiffre = 1 élément), multiplié par 26 (nombre de lettres de l'alphabet puisqu'on ajoute une lettre en queue du code).

Un arrangement (qui par définition est SANS répétition, Odesta) est différent d'une combinaison : "123A" et "321A" sont 2 arrangements différents (comme pour un code, donc) alors que c'est la même combinaison.
La formule de l'arrangement de p éléments choisis parmi n éléments (avec p <= n) est :
factorielle (n) / factorielle (n-p)

On trouve la définition de l'arrangement ici :
et là :
p-liste - Arrangement - Bibm@th.net
et celle de la combinaison ici :
Combinaison - Bibm@th.net

Dans le cas qui nous occupe, le calcul du nombre maximum de codes différents constitués de 8 chiffres et d'une lettre en queue donne ce résultat, avec la notation "n!" = factorielle(n) et p = 8 , n = 10 :
n! / (n-p)! * 26 = 10! / 2! * 26 = 47 174 400

Voilà pour les maths. Reste à tester les solutions proposées pour voir si elles donnent bien la réponse à la question initiale, sans planter la machine (la mienne a planté Excel quand j'ai demandé 5000 codes sans doublons : l'élimination des doublons doit provoquer au bout d'un moment une sorte de boucle sans fin)

Bonne journée.
 
- 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

J
Réponses
0
Affichages
815
Jonathan.uvs
J
Réponses
0
Affichages
936
G
Réponses
27
Affichages
2 K
gluon1976
G
K
Réponses
5
Affichages
14 K
K
S
Réponses
22
Affichages
18 K
sadlersmith
S
H
Réponses
6
Affichages
4 K
Helios67
H
B
Réponses
4
Affichages
2 K
B
Retour