Bonjour à toutes et à tous,
Comment à partir de cette fonction, créée par patricktoulon que je remercie au passage, peut-on placer les chiffres en premiers et les lettres à la suite, pour former par exemple 123abc. Ce code viendra s'ajouter au 3 premières lettres du Nom de la TextBox1 comme indiqué dans le 2ème code.
Il faut donc au final que le code ressemble à ça : (si le NOM est DUPONT) DUP123abc
La fonction CodeEmp fonctionne bien, mais mélange les lettres et les chiffres.
J'espère avoir été assez clair dans mes explications.
Comment à partir de cette fonction, créée par patricktoulon que je remercie au passage, peut-on placer les chiffres en premiers et les lettres à la suite, pour former par exemple 123abc. Ce code viendra s'ajouter au 3 premières lettres du Nom de la TextBox1 comme indiqué dans le 2ème code.
Il faut donc au final que le code ressemble à ça : (si le NOM est DUPONT) DUP123abc
La fonction CodeEmp fonctionne bien, mais mélange les lettres et les chiffres.
J'espère avoir été assez clair dans mes explications.
VB:
Function CodeEmp(Optional NbChar& = 0, Optional NbNum& = 0)
Dim Y&, C&, L
If NbChar = 0 Then NbChar = 2 + (Round(Rnd * 6))
If NbNum = 0 Then NbNum = 2 + (Round(Rnd * 3))
Set Dico = CreateObject("Scripting.Dictionary")
StrLettres = Split(StrConv("abcdefghijklmnopqrstuvwxyz", vbUnicode), Chr(0))
StrChiffres = Split(StrConv("0123456789", vbUnicode), Chr(0))
Do While Dico.Count < NbChar
Y = Round(Rnd * UBound(StrLettres))
Dico(StrLettres(Y)) = ""
Loop
Do While Dico.Count < NbChar + NbNum
Y = Round(Rnd * UBound(StrChiffres))
Dico(StrChiffres(Y)) = ""
Loop
L = Dico.Keys
For C = 1 To 7
y1 = Round(Rnd * UBound(L))
y2 = Round(Rnd * UBound(L))
yy = L(y1)
L(y1) = L(y2): L(y2) = yy
Next C
CodeEmp = Join(L, "")
End Function
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox3
.Value = Left(Me.TextBox1, 3) & CodeEmp(3, 3)
.SelStart = 100
End With
With Me.TextBox4
.Value = CreatePassWord(5, 2)
.SelStart = 100
End With
End Sub