Generation aléatoire d'un code specifique

alex1973

XLDnaute Nouveau
Bonjour

Je suis sous Windows 7.

J’aurai besoin d’un générateur de code, La forme du code doit-être de 4 chiffres et une lettre (uniquement les lettres « A » et « B » sont acceptés). La lettres pouvant être placée a n’importe qu’elle endroit dans le code exemple : A1234, 9A876, 43B21, 456A9, 5678B.
Les doublons de chiffre au seins du meme code n'ai pas accepté exemple : 3453A, etc.

Merci d’avance pour votre aide
Alex
 

sousou

XLDnaute Barbatruc
Re : Generation aléatoire d'un code specifique

Bonjour Alex et Pierre Jean

Trouvant la manip utile, voici ma version.
Mais je suis allé un peu au-delas de ta demande pour le fun, mes propres besoins et pourquoi pas les votres.

Dans l'initilisation de la procédure, tu définis
le nombre de chiffre que tu veux dans ton code, le nombre de lettres que tu veux, si tu accepte ou pas les doublons,le tout avec des tables de caractères dans lesquelles tu met les caractère que tu veux.


Merci de vos remarques
 

Pièces jointes

  • Codealéatoires.xls
    37 KB · Affichages: 526

ROGER2327

XLDnaute Barbatruc
Re : Generation aléatoire d'un code specifique

Bonjour à tous
Une autre version :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Codes_Click()
Dim n$
  n = InputBox("Combien ?", , 1)
  If n <> "" Then
    Randomize
    toto Val(n), "1234567890", "AB", Me.[A2]
  End If
End Sub

Sub toto(n&, v1$, v2$, r As Range)
Dim i&, j&, tmp$, rdo!, sDat(), oColl As New Collection
  n = WorksheetFunction.Max(1, WorksheetFunction.Min(n, 5 * Len(v2) * WorksheetFunction.Permut(Len(v1), 4)))
  ReDim sDat(1 To n, 1 To 1)
  Do
    For i = 1 To 4
      v1 = Mid$(v1, 1 + Int(Len(v1) * Rnd), 1) & Left$(v1, Int(Len(v1) * Rnd(0))) & Right$(v1, Len(v1) - Int(Len(v1) * Rnd(0)) - 1)
    Next i
    rdo = Rnd
    tmp = Left$(v1, 4)
    tmp = Left$(tmp, Int((1 + Len(tmp)) * Rnd)) & Mid$(v2, 1 + Int(Len(v2) * rdo), 1) & Right$(tmp, Len(tmp) - Int((1 + Len(tmp)) * Rnd(0)))
    On Error Resume Next
    oColl.Add tmp, tmp
    If Err.Number = 0 Then j = j + 1: sDat(j, 1) = tmp
    On Error GoTo 0
  Loop While oColl.Count < n
  With r
    .Parent.Range(.Cells, .Parent.Cells(.Parent.Rows.Count, 1).End(xlUp)).ClearContents
    .Resize(oColl.Count, 1).Value = sDat
  End With
End Sub[/B][/COLOR]
Voir classeur joint.​
ROGER2327
#4409


Mardi 24 Haha 138 (Saint Claude Terasse, musicien des Phynances, SQ)
8 Brumaire An CCXIX
2010-W43-5T02:12:38Z
 

Pièces jointes

  • alex1973_codes_sans_doublon_4409.xls
    19 KB · Affichages: 337

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman