Générer une référence alpha-numérique, aléatoire et formater.

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour

Je cherche depuis un petit moment une solution pour générer un code alphanumérique formaté comme cela "###-###". De préférence sous forme de fonction afin que les cellules ce remplissent automatiquement en fonction d'autre variables.

Merci de votre aide

cordialement

5 réponses

Messages postés
28135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2020
325
Bonjour,

En VBA ?
As tu regardé les fonction de random ?

Une simple recherche sur le net donne pleins d'exemples .....

En voici un:
Function RandomString(cb As Integer) As String

    Randomize
    Dim rgch As String
    rgch = "abcdefghijklmnopqrstuvwxyz"
    rgch = rgch & UCase(rgch) & "0123456789"

    Dim i As Long
    For i = 1 To cb
        RandomString = RandomString & Mid$(rgch, Int(Rnd() * Len(rgch) + 1), 1)
    Next

End Function

A adapter à tes besoins bien entendu....
Bonsoir,

Merci de cette réponse lors des recherches sur le net je n'ai trouvais que des codes qui génère la référence dans une message box impossible de le copier.

Je vais donc essayer la solution que tu me propose.

cordialement
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour
je n'ai trouvais que des codes qui génère la référence dans une message box impossible de le copier.

est de nature à m'inquiéter au plus haut point si tu veux dire par là que tu ne sais pas isoler dans ce (le code) que tu "trouves" ce qui correspond à ce que tu veux affecter à une variable !
Bonjour,

J'ai pu isoler la foncton le code que j'ai donne ceci :

Function code_alea()

Randomize

carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
lettre_aleatoire = ""

For i = 1 To 6
nombre_aleatoire = Int(Len(carac) * Rnd) + 1
lettre_aleatoire = lettre_aleatoire & Mid(carac, nombre_aleatoire, 1)
If i = 3 Then lettre_aleatoire = lettre_aleatoire & "-"
Next


End Function


Mais elle n'est pas reconnue.

Cordialement

PS Je débute en VBA
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
1) ta fonction n'est pas typée
2) ta fonction ne retourne rien
3) une fonction personnalisée doit être mise en publique dans un module standard
mets donc ceci dans un module standard
Public Function code_alea() As String ' -->> typée en String
Randomize
carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
For i = 1 To 6
nombre_aleatoire = Int(Len(carac) * Rnd) + 1
' et donne à la fonction ce qu'elle doit retourner
code_alea = code_alea & Mid(carac, nombre_aleatoire, 1)
If i = 3 Then code_alea = code_alea & "-"
Next
End Function

Et regarde ce que donne cette formule dans la cellule de ton choix :
= code_alea()

voilà tout.


EDIT : et ta fonction pourrait par ailleurs être écrite plus simplement ainsi :
Public Function code_alea() As String
Randomize
carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
For i = 1 To 6
code_alea = code_alea & Mid(carac, Int(Len(carac) * Rnd) + 1, 1)
Next
code_alea = Format(code_alea, "@@@-@@@")
End Function

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.