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

2 réponses

  1. xounay Messages postés 337 Statut Membre 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
  2. 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