L'indice n'appartient pas à la sélection

Fermé
Mariiine - Modifié par jordane45 le 22/12/2015 à 10:43
 Mariiine - 29 déc. 2015 à 14:47
Bonjour, l'erreur l'indice n'appartient à la sélection, apparaît. Et, il me souligne la ligne elems(i) = cells(i+2,2). Pouvez-vous m'aider pour corriger cela s'il vous plait ?


Global target As Double
Global nbr_elem As Integer
Global stat(30) As Integer
Global statb(30) As Integer
Global elems(30) As Double
Global best As Double

Sub store_sol()
    Dim i As Integer
    For i = 1 To nbr_elem
        Cells(i + 2, 3) = statb(i)
    Next i
End Sub

Sub copy_stat()
    Dim i As Integer
    For i = 1 To nbr_elem
        statb(i) = stat(i)
    Next i
End Sub

Sub eval(ByVal total As Double, ByVal pos As Integer)
    If pos <= nbr_elem Then
        stat(pos) = 0
        eval total, pos + 1
        stat(pos) = 1
        eval total + elems(pos), pos + 1
    Else
        If (Abs(total - target) < Abs(target - best)) Then
            best = total
            copy_stat
        End If
    End If
End Sub

Sub find_sol()

'Originally written by Naishad Rajani.  User-interface made
'pretty by Jimmy L. Day.

    Dim StTime As Date, EndTime As Date
    Dim i As Integer
    StTime = Now
    best = 0
    target = Cells(1, 2)
    nbr_elem = Cells(2, 2)
    For i = 1 To nbr_elem
        elems(i) = Cells(i + 2, 2)
    Next i
    eval 0, 1
    store_sol
    EndTime = Now
    Debug.Print (EndTime - StTime) * 86400
End Sub



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
22 déc. 2015 à 10:45
Bonjour,

Vous pourriez mettre un fichier avec le code et les donnees qui provoquent l'erreur?????

Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
Bonjour, tout d'abord merci pour votre réponse.

Ci-joint le lien

http://www.cjoint.com/c/ELwkTUJV82a
0
Il faudrait que les macros fonctionnent jusqu'à plus de 100 lignes de saisies
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Mariiine
22 déc. 2015 à 15:18
Re,

Fichier modifie pour l'erreur (dimensionnement des tableaux a faire en dynamique) et quelques astuces Excel , mais y a un bleme, la procedure Sub eval(ByVal total As Double, ByVal pos As Integer) ne se termine jamais ( ai ajoute un Doevents pour pourvoir stopper le code)
https://www.cjoint.com/c/ELwortbaDqf
0
Bonjour,

Je ne suis pas informaticienne et débutante dans ce type de macro donc je ne comprends pas tout à ce que vous avez dit. De plus, j'ai essayé le nouveau fichier que vous m'avez envoyé et cela ne fonctionne plus du tout quand je souhaite rechercher un montant .

Cordialement
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Mariiine
29 déc. 2015 à 14:09
Bonjour
C'est en gros ce que je vous ai écrit, ça ne marche pas. Le problème vient de la procédure Sub eval
0