VBA, boucle avec erreur dans le résultat

Résolu/Fermé
tartino Messages postés 8 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 18 novembre 2010 - 18 nov. 2010 à 16:06
 Paf - 18 nov. 2010 à 18:05
Bonjour,

Grace à paf j'ai pu construire la boucle que je désirais. Cependant j'ai trouvé une erreur dans le résultat attendu.

Ma macro test toutes les possibilités de structure pour un mur (3elements constitutifs) et pour chaque type effectue un calcul de prix.

J'ai demandé que :
Si le prix de la structure est moins cher que le prix précédant cette structure prends la première position.
(Également si le prix est entre le 1er et 2eme il prend la 2 eme place,...)


Je cherche à avoir les 3 solutions les moins chères et un affichage de celles-ci dans une page du classeur.
Avec chaque prix je demande une impression de la composition du mur et de certaines caractéristiques techniques.

Le problème est que le remplacement de l'ancienne solution optimale par la nouvelle ne marche qu'à moitie... en effet, les prix se décalent correctement mais pas les caractéristiques. => prix corect avec caracteristiques d'une autre structure.

Voici mon code pour la partie remplacement, auriez-vous une idée de possibilité d'erreur?

'remplacement des solutions par une meilleure solution trouvée
    For n = 1 To 7
        If Pmur < Worksheets("sheet3").Cells(2, 1) Then
        
        'seconde solution optimale passe 3ème
                Worksheets("sheet3").Cells(4, n) = Worksheets("sheet3").Cells(3, n)
        
        'meilleure solution passe 2ème
        
        Worksheets("sheet3").Cells(3, n) = Worksheets("sheet3").Cells(2, n)
        
        
        'Nouvelle solution optimale
        Worksheets("sheet3").Cells(2, 1) = Pmur
        Worksheets("sheet3").Cells(2, 2) = Worksheets("ListeMateriauxMur").Cells(1 + i, 2)
        Worksheets("sheet3").Cells(2, 3) = Worksheets("ListeMateriauxMur").Cells((1 + nbrPE) + j, 2)
        Worksheets("sheet3").Cells(2, 4) = Worksheets("ListeMateriauxMur").Cells((1 + nbrPE + nbrSP) + k, 2)
        Worksheets("sheet3").Cells(2, 5) = Eif
        Worksheets("sheet3").Cells(2, 6) = Rmur
        Worksheets("sheet3").Cells(2, 7) = Rif
        
        
        ElseIf ...... 'même structure si sol1ancienne < nouveau prix<  sol2 ancienne
next n
        


nb: j'ai la meme structure pour le remplacement de la 3eme et la aucun probleme.

Comme je sais qu'il est difficile de tout expliquer de facon claire des le premier post je suis ouvert si vous voulez des précisions.

Merci d'avance votre lecture,

Tartino.

2 réponses

tartino Messages postés 8 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 18 novembre 2010
18 nov. 2010 à 16:53
Bon j'ai réusis à trouver une solution qui semble fonctionner.

j'ai mis une boucle

for n = 1 to 7
next n

après chaque utilisation de n. (initialement)

Ca à l'air de fonctionner.
Je testerai la semaine prochaine pour être sur.

Je laisse le problème non résolus au cas ou quelq'un pourait m'expliquer pourquoi je ne peux pas mettre l'ensemble dans la boucle.

Bonne soirée à vous.

Tartino.
0
Bonsoir

avec un exemple du classeur déposé sur ci-joint ce serait peut être plus clair,
j'avoue que je m'y perd un peu.

https://www.cjoint.com/

A+

Ne pas oublier de coller le lien obtenu dans un post réponse
0