Salut
Je pense que ton problème vient d'ici
1 2 3 4 5
| newCost = Cost(sol, numSlots, numRooms, matrix)
If newCost <= solCost Then
solCost = newCost
Else |
à la création d'une variable Integer, VB l'initialise à 0, donc tant que newcost à une valeur supérieur ou = à 0, solCost reste à 0.
Donc quand tu fais
Sheets("Feuil5").Cells(i / 100, 1).Value = solCost
toutes les 100 lignes, solCost vaut zéro puisque visiblement toutes les solutions calculées précédemment sont visiblement positives.
Donc je propose de remplacer le signe de la comparaison
If newCost >= solCost Then
mais bon, vu que je ne comprends pas le problème global, c'est à toi de voir ce que tu cherches à faire
Sur un aspect plus pratique, j'ajouterais trois remarques
- Si possible, tu devrais travailler avec un tableau "interne" au lieu d'utiliser les feuilles excel, tes calculs seraient bien plus rapide.
- Regarde l'utilisation de application.ScreenUpdating, qui te permettra déjà de gagner en performance si tu ne souhaites pas passer aux tableaux.
- Plutôt que d'utiliser un inputbox pour demander le nom du fichier, tu peux utiliser les outils fournis par FSO et ouvrir avec un dialoguebox te permettant de sélectionner un fichier sur le Disque.
++
Qwaz
Partager