Excel Macro deCalcul puis copie des résultats

Résolu/Fermé
rhad - 13 août 2010 à 19:19
 rhad - 14 août 2010 à 22:52
Bonjour,


J'ai réalisé une feuille de calcul plutôt complexe qui utilise le solveur pour donner les résultats.

Cependant, je ne peux faire les calculs que pour un jeu de paramètre à la fois.

Aussi, sur une autre feuille, j'ai mis les paramètres en colonne, j'ai fais une macro qui va copier les paramètres dans la feuille de résolution et qui doit me retourner les résultats en copie avant de passer à la colonne suivante. C'est là que je bloque. Comment faire pour qu'Excel copie les paramètres de la colonne A dans le solveur avant de me copier les résultats du calcul A puis passer à la colonne B pour calcul B etc

Si quelqu'un a une idée, je suis preneur!

Bonne journée,

rhad

2 réponses

eriiic
Messages postés
24381
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
16 mai 2022
7 072
13 août 2010 à 22:54
Bonsoir,

Pour avoir toutes les fonctions s'y rapportant, dans l'aide VBA fais une recherche sur : solver

A cette adresse un exemple de solver en VBA.

Pour copier tes valeurs c'est :
cellule destination = cellule source
ex:
Feuil1.[C3]=Feuil2.[B2]


eric
0
On s'est mal compris. Le solver fonctionne. Mon problème c'est la copie avec incrémentation d'une colonne par cas.

Ex :

Pour certains paramètres, mon solver retourne des résultats :

SOLVER Xp1 Xp2 Xp3 -> Xr1 Xr2 Xr3

Afin d'éviter de mieux visualiser les variations, j'ai une feuille comme suit :

!A ! B ! C !
!Ap1 ! Bp1 ! Cp1 !
!Ap2 ! Bp2 ! Cp2 !
!Ap3 ! Bp3 ! Cp3 !

Là je voudrais faire une macro qui va copier les paramètres de A dans le solver, le faire tourner et ensuite copier les résultats en dessous des paramètres de A avant de passer à B puis C...
0
eriiic
Messages postés
24381
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
16 mai 2022
7 072
Modifié par eriiic le 14/08/2010 à 10:45
Ah, ok
Dans ce cas :
Sub test() 
    Dim sh1 As Worksheet, sh2 As Worksheet, col As Long 
    Set sh1 = Worksheets("Feuil1") 
    Set sh2 = Worksheets("Feuil2") 
    For col = 1 To sh2.[A1].End(xlToRight).Column 
        ' copier 3 valeurs de Feuil2 en Feuil1 
        sh1.Range("A1:A3") = sh2.Cells(1, col).Resize(3, 1).Value 
        ' là tu mets les instructions qui vont bien pour le solveur 
        ' 
        ' copier 1 valeur de Feuil1 en Feuil2 
        sh2.Cells(4, col) = sh1.[A4] 
    Next col 
End Sub

te copie successivement les lignes 1 à 3 de chaque colonne de Feuil2 dans la colonne A de Feuil1, puis te ramene la valeur en A4 de Feuil1 dans la colonne concernée en Feuil2 ligne 4.

eric
0
Impeccable! Merci bien!
0