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

Generation aléatoire d'un code specifique

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

A

alex1973

Guest
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
 
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

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

- 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.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…