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

macspeed - 6 mars 2017 à 20:33 - Dernière réponse : ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention
- 8 mars 2017 à 08:15
VBA Office (Excel, Word ...) Posez votre question Signaler Répondre au sujet
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
Afficher la suite 

5 réponses

Répondre au sujet
jordane45 19257 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 6 mars 2017 à 20:42
0
Utile
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....
Commenter la réponse de jordane45
0
Utile
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
Commenter la réponse de macspeed
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 7 mars 2017 à 07:20
0
Utile
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 !
Commenter la réponse de ucfoutu
0
Utile
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
Commenter la réponse de macspeed
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par ucfoutu le 8/03/2017 à 08:38
0
Utile
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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.