suite de numéros aléatoires

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

Num

XLDnaute Nouveau
Bonjour à tous.
Avis à tous les super pro d'excel ! 😉
Voici ce que je souhaiterai réaliser dans un onglet excel :

De la cellule A1 à A10 (par exemple) je souhaiterai avoir des numéros aléatoires alphanumériques codé sur 10 caractères.
En suite je souhaiterai refaire la même manipulation mais de la cellule C15 à C40 (par exemple).
Par contre je souhaites que des numéros aléatoires uniques dans tout l'onglet !
donc la suite de C15 à C40 doit être différente de celle de A1 à A10.
Le but étant de réaliser plusieurs suite de numéro aléatoire dans un onglet.

Je pense qu'il faut réaliser un macro avec comparaison des nombres créés dans l'onglet, mais la moi je cale 🙁

Merci d'avance pour vos réponses. 🙂
 
Re : suite de numéros aléatoires

Bonjour


Je te laisse t'inspirer de :
Code:
Sub RandomPassword()
'auteur: Dave Hawley
    Dim strPassword As String
    Dim i As Integer
    For i = 1 To 10
        If i Mod 2 = 0 Then
            strPassword = Chr(Int((90 - 65 + 1) * Rnd + 65)) & strPassword
        Else
            strPassword = Int((9 * Rnd) + 1) & strPassword
        End If
    Next i
     MsgBox strPassword
End Sub
• Pour générer par formule
(en reprenant l'exemple VBA)

=CAR(ENT(90-65+1)*ALEA()+65)&CAR(ENT(90-65+1)*ALEA()+65)

Génère deux lettres aléatoires

Tu peux aussi employer des formule nommée
Insertion/Noms/Définir
Ex: LALEA
=CAR(ENT(90-65+1)*ALEA()+65)
Puis
DIXLettresA

=LALEA&LALEA&
LALEA&LALEA&LALEA&LALEA&LALEA&LALEA&LALEA&LALEA

Ensuite dans une cellule tu saisis:
=DIXLettresA


Edition: bonjour Pierrejean, bonjour Pierrot93
 
Dernière édition:
Re : suite de numéros aléatoires

bonjour Num

Je ne suis pas super pro , donc je ne ferai qu'une suggestion
Creer des le depart un tableau (sans doublon) de numeros alphanumeriques suffisament important , et ensuite puiser dans ce tableau au fur et a mesure des besoins
As-tu une idée du nombre maximum de numeros a creer ?
Y a t il des regles a respecter pour la constitution des numeros ?

Edit : Salut Staple 🙂
 
Re : suite de numéros aléatoires

Bonjour Num, PierreJean, Jean-Marie

une autre solution, la bonne idée d'utiliser la fonction "choose" dans ce cas est de l'ami Didier🙂 :

Code:
Option Explicit
Sub test()
Dim i As Byte, c As Byte, l As Byte, x As String, y As String, z As Byte, w As Byte
Randomize
w = 10
For c = 1 To 3 Step 2
    For l = 1 To w
        For i = 1 To 10
            x = Choose(Int((36 * Rnd) + 1), "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" _
            , "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" _
            , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            y = y & x
        Next i
        Cells(l + z, c).Value = y
        y = ""
    Next l
z = 14
w = 26
Next c
End Sub

bon après midi.
@+
 
Re : suite de numéros aléatoires

tout d'abord merci pour vos réponses si rapide !

pierrejean : il n'y a pas de structure à respecter, juste qu'il soit de 10 carractère.
Concernant le nombre je ne sais pas combien.

Je vais essayer les différentes solutions proposées et je vous tient au courant.

Ce qui me fait peur c'est que je ne vois pas qu'elle est la formule qui va controler sur tout mon onglet, qu'il n'y a pas de doublon !

Je vais tester !
 
Re : suite de numéros aléatoires

le code aléatoire correspond à un produit.
un code = un produit

et par onglet j'ai différente famille.
Ce qui me donne le code final suivant

"code famille" + "numéro aléatoire" + "incrémentation"

ex : EBTG 920zp3z8yq 0001
donc dans tout mon premier onglet il y aura des codes commencant par EBTG....

L'autre onglet famille suivante...

sinon j'ai testé le code de Pierrot93, il faudrait juste que je puisse lui déterminer la plage d'action, au lieu qu'il soit impossé par le code.

Par exemple je sélectionne une zone puis je lance la macro et la j'ai tous les numéros aléatoires !! le rêve quoi !

Sinon concernant le fonction "choose", comment peux ton controler qu'il ne génére pas de doublon?
 
Re : suite de numéros aléatoires

Re

pour pouvoir sélectionner une ou plusieurs plages de cellules :

Code:
Option Explicit
Sub test()
Dim c As Range, maplage As Range, i As Byte, x As String, y As String
Randomize
On Error Resume Next
Set maplage = Application.InputBox("selectionnez une ou" & vbLf _
    & "plusieurs plage(s) de cellules !!!", , , , , , , 8)
On Error GoTo 0
If Not maplage Is Nothing Then
    For Each c In maplage
        For i = 1 To 10
            x = Choose(Int((36 * Rnd) + 1), "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" _
            , "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" _
            , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            y = y & x
        Next i
        c.Value = y
        y = ""
    Next c
End If
End Sub

@+
 
Re : suite de numéros aléatoires

Re

pour éviter les caractères en doublon dans une même chaîne :

Code:
Option Explicit
Sub test()
Dim c As Range, maplage As Range, i As New Collection, ii, x As String, y As String
Randomize
On Error Resume Next
Set maplage = Application.InputBox("selectionnez une ou" & vbLf _
    & "plusieurs plage(s) de cellules !!!", , , , , , , 8)
On Error GoTo 0
If Not maplage Is Nothing Then
    For Each c In maplage
        Do While i.Count < 10
            x = Choose(Int((36 * Rnd) + 1), "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" _
            , "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" _
            , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            On Error Resume Next
            i.Add x, CStr(x)
        Loop
        On Error GoTo 0
        For Each ii In i
            y = y & ii
        Next ii
        Set i = Nothing
        c.Value = y
        y = ""
    Next c
End If
End Sub

bonne soirée
@+
 
Re : suite de numéros aléatoires

Re,

allez dernière version pour le fun, avec recherche de doublon sur toutes les feuilles du classeurs :

Code:
Option Explicit
Sub test3()
Dim c As Range, maplage As Range, i As New Collection, ii, x As String, y As String
Dim ws As Worksheet, r As Range
Randomize
On Error Resume Next
Set maplage = Application.InputBox("selectionnez une ou" & vbLf _
    & "plusieurs plage(s) de cellules !!!", , , , , , , 8)
On Error GoTo 0
If Not maplage Is Nothing Then
    For Each c In maplage
debut:
        Do While i.Count < 10
            x = Choose(Int((36 * Rnd) + 1), "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" _
            , "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" _
            , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            On Error Resume Next
            i.Add x, CStr(x)
        Loop
        On Error GoTo 0
        For Each ii In i
            y = y & ii
        Next ii
        Set i = Nothing
        For Each ws In Worksheets
            Set r = ws.Cells.Find(y, , xlValues, xlPart, , , False)
            If Not r Is Nothing Then y = "": GoTo debut
        Next ws
        Set r = Nothing
        c.Value = y
        y = ""
    Next c
End If
End Sub

j'aime bien également ta solution PierreJean🙂

@+
 
- 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
2
Affichages
303
Retour