Concatenation d'une chaine de caractère

bonjour je suis débutant dans la programmation en vba
j’ai un exercice a réaliser en informatique appliqués à la biologie et je suis bloquer

j’ai un tableau avec 20 acides aminés, mon programme doit tirer un acide aminé au hasard (dans la case 30E) 100 fois et au final je doit obtenir une protéine avec 100 acides aminés(dans la case B26)
pour l’instant mon programme tire 100 fois un acide aminé donc une lettre mais à chaque fois il remplace la précédente par la nouvelle au lieu de l’ajouter a la suite.
je sais que je doit utiliser une concaténation avec le “&” mais je n’arrive pas à l’appliquer au cas présent.
merci de votre aide

mon programme :

Sub tirage_acide_aminés()
Dim i, x As Integer
Dim acide_aminés(1 To 20) As String
acide_aminés(1) = “A”
acide_aminés(2) = “C”
acide_aminés(3) = “D”
acide_aminés(4) = “E”
acide_aminés(5) = “F”
acide_aminés(6) = “G”
acide_aminés(7) = “H”
acide_aminés(8) = “I”
acide_aminés(9) = “K”
acide_aminés(10) = “L”
acide_aminés(11) = “M”
acide_aminés(12) = “N”
acide_aminés(13) = “P”
acide_aminés(14) = “Q”
acide_aminés(15) = “R”
acide_aminés(16) = “S”
acide_aminés(17) = “T”
acide_aminés(18) = “V”
acide_aminés(19) = “W”
acide_aminés(20) = “Y”
For i = 1 To 20
Worksheets(“exercice 2”).Cells(26, 2).Value = “”
Next i
For i = 1 To 100
x = Int(Rnd() * 20) + 1
Worksheets(“exercice 2”).Cells(30, 5).Value = acide_aminés(x)
Worksheets(“exercice 2”).Cells(26, 2).Value = Worksheets(“exercice 2”).Cells(30, 5).Value
Next i
End Sub
Edité le 16/02/2008 à 15:42

On utilise le “&” pour concaténer des chaines en excel (une “somme” de cellules), mais en VBA, c’est le signe + qu’il faut utiliser

Là tu nettoies 20 fois de suite la même cellule ; ce n’est peut être pas nécessaire

Ce n’est pas faux, mais plutôt que de te servir d’une cellule pour ton stockage temporaire, tu peux utiliser une variable VBA
Dim tirage as String (à mettre avec les autres déclarations)
For i = 1 To 100
x = Int(Rnd() * 20) + 1
tirage = acide_aminés(x)
Next i

et pour la concaténation , il faut ajouter la nouvelle valeur à l’existant
Dim tirage as String (à mettre avec les autres déclarations)
tirage = “”
For i = 1 To 100
x = Int(Rnd() * 20) + 1
tirage = tirage + acide_aminés(x)
Next i

Il ne reste plus qu’à affecter la valeur finale à la cellule, mais seulement une fois que la boucle est terminée.
Dim tirage as String (à mettre avec les autres déclarations)
tirage = “”
For i = 1 To 100
x = Int(Rnd() * 20) + 1
tirage = tirage + acide_aminés(x)
Next i
Worksheets(“exercice 2”).Range(“B26”) = tirage

A la limite, tu peux te dispenser du tableau d’affectation, sachant que chr(65)=“A”, chr(66)=“B”, etc .
tu auras alors
tirage = tirage + chr(65 + int(Rnd() * 20))
Edité le 16/02/2008 à 16:14

merci beaucoup pour ton aide