Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Range variable dans macro utilisant le solver

4 réponses
Avatar
Sylvain
Bonjour,

je voudrais effectuer la boucle suivante mais je défini mal le range de
ByChange de la fonction SolverOK.

Comment défénit-on le range ?
D'avance merci
Sylvain

Sub boucle_for()
Dim Cellule_a_Optimiser, Amplitude, Phase, Offset

For Each Cellule In Range("ae5:ae10")
Cellule_a_Optimiser = Cellule.Offset(0, 0).Address
Amplitude = Cellule.Offset(0, -3).Address
Phase = Cellule.Offset(0, -2).Address
Offset = Cellule.Offset(0, -1).Address
SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

' Pas d'affichage de la boite de dialogue
SolverSolve UserFinish:=True

' Fin et garde les valeur de la solution trouvée
SolverFinish KeepFinal:=1
Next
End Sub

4 réponses

Avatar
isabelle
bonjour Sylvain,

OffSet est un nom déjà utilisé par xl, il faudrait modifier le nom de cette variable.

isabelle


Bonjour,

je voudrais effectuer la boucle suivante mais je défini mal le range de
ByChange de la fonction SolverOK.

Comment défénit-on le range ?
D'avance merci
Sylvain

Sub boucle_for()
Dim Cellule_a_Optimiser, Amplitude, Phase, Offset

For Each Cellule In Range("ae5:ae10")
Cellule_a_Optimiser = Cellule.Offset(0, 0).Address
Amplitude = Cellule.Offset(0, -3).Address
Phase = Cellule.Offset(0, -2).Address
Offset = Cellule.Offset(0, -1).Address
SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

' Pas d'affichage de la boite de dialogue
SolverSolve UserFinish:=True

' Fin et garde les valeur de la solution trouvée
SolverFinish KeepFinal:=1
Next
End Sub


Avatar
Sylvain
Bonjour Isabelle,

merci pour la réponse, mais il me semble que ce n'est pas ça le probleme
(j'ai essayé avec un autre nom de variable)
Je crois que j'utilise mal l'objet range avec les variable, mais je ne
connais pas la bonne syntaxe....

d'avance merci pour l'aide

Sylvain


bonjour Sylvain,

OffSet est un nom déjà utilisé par xl, il faudrait modifier le nom de cette variable.

isabelle


Bonjour,

je voudrais effectuer la boucle suivante mais je défini mal le range de
ByChange de la fonction SolverOK.

Comment défénit-on le range ?
D'avance merci
Sylvain

Sub boucle_for()
Dim Cellule_a_Optimiser, Amplitude, Phase, Offset

For Each Cellule In Range("ae5:ae10")
Cellule_a_Optimiser = Cellule.Offset(0, 0).Address
Amplitude = Cellule.Offset(0, -3).Address
Phase = Cellule.Offset(0, -2).Address
Offset = Cellule.Offset(0, -1).Address
SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

' Pas d'affichage de la boite de dialogue
SolverSolve UserFinish:=True

' Fin et garde les valeur de la solution trouvée
SolverFinish KeepFinal:=1
Next
End Sub





Avatar
isabelle
re bonjour Sylvain,

les cellules dont tu veut faire référence sont t'elle bien celle ci pour chaque passage dans la boucle,

C.Optimiser Amplitude Phase NOffset
$AE$5 $AB$5 $AC$5 $AD$5
$AE$6 $AB$6 $AC$6 $AD$6
$AE$7 $AB$7 $AC$7 $AD$7
$AE$8 $AB$8 $AC$8 $AD$8
$AE$9 $AB$9 $AC$9 $AD$9
$AE$10 $AB$10 $AC$10 $AD$10

voici un extrait de l'aide:
ByChange Argument de type Variant facultatif. Cellule ou plage de cellules qui sera modifiée afin d'obtenir le résultat souhaité dans la cellule cible. Correspond à la zone Cellules variables de la
boîte de dialogue Paramètres du solveur.

je crois que cette plage doit être adjacente, il faudrait donc modifier

SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

par

SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude & ":" & NOffset)

isabelle


Bonjour Isabelle,

merci pour la réponse, mais il me semble que ce n'est pas ça le probleme
(j'ai essayé avec un autre nom de variable)
Je crois que j'utilise mal l'objet range avec les variable, mais je ne
connais pas la bonne syntaxe....

d'avance merci pour l'aide

Sylvain



bonjour Sylvain,

OffSet est un nom déjà utilisé par xl, il faudrait modifier le nom de cette variable.

isabelle



Bonjour,

je voudrais effectuer la boucle suivante mais je défini mal le range de
ByChange de la fonction SolverOK.

Comment défénit-on le range ?
D'avance merci
Sylvain

Sub boucle_for()
Dim Cellule_a_Optimiser, Amplitude, Phase, Offset

For Each Cellule In Range("ae5:ae10")
Cellule_a_Optimiser = Cellule.Offset(0, 0).Address
Amplitude = Cellule.Offset(0, -3).Address
Phase = Cellule.Offset(0, -2).Address
Offset = Cellule.Offset(0, -1).Address
SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

' Pas d'affichage de la boite de dialogue
SolverSolve UserFinish:=True

' Fin et garde les valeur de la solution trouvée
SolverFinish KeepFinal:=1
Next
End Sub







Avatar
Sylvain
Merci Isabelle,

tu as parfaitement compris le truc et résolu mon problème de déclaration...
Ma macro tourne parfaitmenet maintenant.
Merci encore et bonne journée

Sylvain


re bonjour Sylvain,

les cellules dont tu veut faire référence sont t'elle bien celle ci pour chaque passage dans la boucle,

C.Optimiser Amplitude Phase NOffset
$AE$5 $AB$5 $AC$5 $AD$5
$AE$6 $AB$6 $AC$6 $AD$6
$AE$7 $AB$7 $AC$7 $AD$7
$AE$8 $AB$8 $AC$8 $AD$8
$AE$9 $AB$9 $AC$9 $AD$9
$AE$10 $AB$10 $AC$10 $AD$10

voici un extrait de l'aide:
ByChange Argument de type Variant facultatif. Cellule ou plage de cellules qui sera modifiée afin d'obtenir le résultat souhaité dans la cellule cible. Correspond à la zone Cellules variables de la
boîte de dialogue Paramètres du solveur.

je crois que cette plage doit être adjacente, il faudrait donc modifier

SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

par

SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude & ":" & NOffset)

isabelle


Bonjour Isabelle,

merci pour la réponse, mais il me semble que ce n'est pas ça le probleme
(j'ai essayé avec un autre nom de variable)
Je crois que j'utilise mal l'objet range avec les variable, mais je ne
connais pas la bonne syntaxe....

d'avance merci pour l'aide

Sylvain



bonjour Sylvain,

OffSet est un nom déjà utilisé par xl, il faudrait modifier le nom de cette variable.

isabelle



Bonjour,

je voudrais effectuer la boucle suivante mais je défini mal le range de
ByChange de la fonction SolverOK.

Comment défénit-on le range ?
D'avance merci
Sylvain

Sub boucle_for()
Dim Cellule_a_Optimiser, Amplitude, Phase, Offset

For Each Cellule In Range("ae5:ae10")
Cellule_a_Optimiser = Cellule.Offset(0, 0).Address
Amplitude = Cellule.Offset(0, -3).Address
Phase = Cellule.Offset(0, -2).Address
Offset = Cellule.Offset(0, -1).Address
SolverOK SetCell:=Range(Cellule_a_Optimiser), MaxMinVal:=2,
ByChange:=Range(Amplitude, Phase, Offset)

' Pas d'affichage de la boite de dialogue
SolverSolve UserFinish:=True

' Fin et garde les valeur de la solution trouvée
SolverFinish KeepFinal:=1
Next
End Sub