Parler le VBA c'est pas totalement inné

Résolu
daftfunk -  
 daftfunk -
Bonjour,
je débute en VBA et je galere pour arriver à mes fins sous excel (voir access)

Je souhaite a partir dune colonne A1:A32 récupère chaque cellule (ce sont des nom) et génère un code dans la cellule B (B1:B14) en fonction de son nom un code numérique ou alpha numérique!

exercice tout simple a priori

A1 Bertrand -> 2518 (B=2 e=5 r=18) on s'arrête a 4 chiffres la methode de chiffrement peut être autre comme prendre des chiffres au hasard

j'ai fait des tuto mais les résultats sont assez aléatoires


j'hésite entre une fct et sub (j'arrive pas a faire fct ma fonction ... alors pour mois ce sera sub) mais est ce la bonne méthode?

si quelqu'un pouvait me mettre le pied a l'étrier!


ou peut etre m'expliquer comment obtenir en cellule B une code a 4 chiffres aleatoire?

Merci de votre patience
A voir également:

2 réponses

xounay Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   35
 
Salut je pense que si tu dois revoyer plus d'une valeur Il vaut mieux une sub avec des parametre passé en byRef plustot que plein de variable globales.
<code>
Sub
TestSub(Message As String)
Message = Message & "rajout"
End Sub
Reviens au meme que
TestSub(By Val Message As String)
Message = Message & "rajout"
End Sub
Mais est different que
TestSub(By Ref Message As String)
Message = Message & "rajout"
End Sub
Lors d'un byval une copi de la variable passé en parametre est stocké dans un variable local qui a donc une durée de vie limité a la sub.
Alors que lorsque tu utilises ByRef l'adresse memoire de la variable est passé en parametre donc les modification apporté a la variable passé en parametre seront effective..

En esperant t'avoir eclairé.
0
daftfunk
 
C'est pas genial mais j'ai trouvé ça

Sub CreateCode()
Dim celle As Range
Dim MyValue1 As Integer
Dim MyValue2 As Integer
Dim MyValue3 As Integer
Dim MyValue4 As Integer

For Each celle In Range("a1:a14")
Randomize

' Initialise le générateur de nombres aléatoires.
' Renvoie une valeur aléatoire comprise entre 1 et 6.
MyValue1 = CInt(Int((9 * Rnd()) + 1))
MyValue2 = CInt(Int((9 * Rnd()) + 1))
MyValue3 = CInt(Int((9 * Rnd()) + 1))
MyValue4 = CInt(Int((9 * Rnd()) + 1))
celle = MyValue1 & MyValue2 & MyValue3 & MyValue4
Next
End Sub
0