Re ibwalatuma , bonjour curulis57
Pour ma part utiliser le code suivant à insérer dans votre module:
Sub population_initiale()
Dim x&
produits = [e2]: sequences = produits + 1: maximum = sequences * 5
'création population initiale et chromosomes avec nombres aleatoires sans doublons
For x = 0 To sequences: Range("b17").Offset(5 * x).Resize(, 6) = NbAlea(0, 5, 6): Next
End Sub
Function NbAlea(deb As Long, fin As Long, nbr As Long)
Dim i&, k&, n&, aux, t
If nbr > (fin - deb + 1) Then NbAlea = CVErr(xlErrNA): Exit Function
Randomize
ReDim t(1 To (fin - deb + 1))
For i = 1 To (fin - deb + 1): t(i) = deb + i - 1: Next
For k = 1 To 3
For i = 1 To (fin - deb + 1)
n = 1 + Int(Rnd * (fin - deb + 1))
aux = t(i): t(i) = t(n): t(n) = aux
Next i
Next k
ReDim Preserve t(1 To nbr)
NbAlea = t
End Function
Quand on déclare une variable comme étant de type Integer, on écrit: Dim xx as Integer
VBA autorise un raccourci qui est %, on peut donc écrire: Dim xx%
[E2] demande à Excel de retourner l'évaluation de la cellule E2. Ici [E2] représente donc la valeur de la cellule E2.
On vous fournit des exemples de codes. A vous de mettre les mains dans le cambouis pour les adapter à vos souhaits.
Je vous avais dit que votre fichier n'est pas opérationnel:
- Quand on lance la procédure Main(), elle ne trouve pas le classeur "sans_decomposition_3.xlsm" dans l'instruction Workbooks("sans_decomposition_3.xlsm").Activate
- Quand on lance directement population_initiale(), les variables ne sont pas initialisées, donc on a adapté pour les tests. J'ai initialisé directement les variables produits, sequences et maximum