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.
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
@NONO14
[juste pour le fun]
Alors, pour ton cas, on peut transformer la formule en fonction personnalisée
VB:
Function cod() As String
[IV1600].Formula2 = "=TEXTJOIN("""",1,INDEX(CHAR(VSTACK(SEQUENCE(26,1,65,1),SEQUENCE(10,1,48,1))),RANDARRAY(10,1,1,36,-1)))"
cod = Range("IV1600").Value
End Function
Sub test()
Randomize
MsgBox cod
End Sub
[/juste pour le fun]
PS: faire les adaptations nécessaires pour ton TextBox
Ici la macro test utilise simplement un MsgBox pour afficher les caractères
Bonjour Staple1600,
J'ai mis ton code en place et ça fonctionne bien, il réponds à mes attentes.
Par contre, je dois ajouter les deux derniers chiffes de l'année en cours, sachant que dans la feuille "Données" il y a une cellule nommée...