Solver en VBA Fonction SOLVEROK SOLVERADD et

eniotacom

XLDnaute Nouveau
Bonjour,

j'ai un problème au moins grave.

du genre j'automatise des solvers parce que c'est pénible de faire à chaque fois outil / solver sélectionner toutes les cases...

donc je le fait en macro ce qui me donne le code suivant (qui ne semble pas très optimisé):


Code:
[I][COLOR="Blue"]Sub barre1()
Option Base 1
Option Explicit
'
Dim colonne As String

colonne = Left(ActiveCell.Address(False, False), (ActiveCell.Column < 27) + 2)

    SolverOptions MaxTime:=100, Iterations:=100, Precision:=0.000001, AssumeLinear _
        :=False, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, _
        IntTolerance:=10, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=True
        
    ' définir la cellule cible. Ici on minimise C15 qui est le poids de la chute
    SolverOk SetCell:="c$15", MaxMinVal:=2, ValueOf:="0", ByChange:="$C$7:$C$11"
    
    ' définir les cellules variables. Ici c'est le nombre des différents produits que l'on
    ' fait varier. On défini que ce sont des valeurs entières
    SolverAdd cellref:="$C$7:$C$11", Relation:=4, FormulaText:="entier"
 
    
    
    'on défini que le poids de la chute de produit >= 0
    SolverAdd cellref:="$C$7:$C$11", Relation:=3, FormulaText:="0"

    
    'on défini que le poids total des produit ne peut être supérieur au poids de la barre.
    SolverAdd cellref:="$C$14", Relation:=1, FormulaText:="$C$3"
 
    
   ' on défini que le poids de la chute ne pe pas être inférieur à 0
    SolverAdd cellref:="$C$15", Relation:=3, FormulaText:="0"
 
    
    
    'dans la cellule nbre de ref la formule est la suivante =nb.si(C7:C1;"<>0")-1
    'ce qui signifie que : on compte le nombre de cases différentes de 0 et on enlève 1
    'le résultat est donc le nombre de références produites dans la barre
    'si on à 2 ref alors C13>=1 donc c'est bon
    SolverAdd cellref:="$C$13", Relation:=3, FormulaText:="1"
 
    
    'on résouds le solver
    SolverSolve
   
    
    
    '***********************************************************
    ' on efface toutes les contraintes du solver
    Solverdelete cellref:="$C$7:$C$11", Relation:=4, FormulaText:="entier"
    Solverdelete cellref:="$c$14", Relation:=1, FormulaText:="$c$3"
    Solverdelete cellref:="$c$13", Relation:=3, FormulaText:="1"
    Solverdelete cellref:="$C$15", Relation:=3, FormulaText:="0"
    Solverdelete cellref:="$C$7:$C$11", Relation:=3, FormulaText:="0"
    
    
End Sub[/COLOR][/I]
le problème est :

je dois recopier ce solver qui utilisera parfaitement les mêmes cases dans chaques colonnes sur un nom inconnu de colonnes.
je souhaite donc utiliser comme variable la lettre de la colonne mais impossible d'écrire quelque chose du style

celleref= colone&"$15"
cellref= cells(clonne,15)
cellref = range(cells(colone,15),(colonne,15))

et je n'ai pas envie de recopier bêtement la macro x fois en changeant tous les C en D, les D en E ...

Merci d'avance.
 

Pièces jointes

  • tests JP.zip
    31.3 KB · Affichages: 61
  • tests JP.zip
    31.3 KB · Affichages: 64
  • tests JP.zip
    31.3 KB · Affichages: 60
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

bonjour eniotacom

Vois si cela te convient (a adapter eventuellement)
 

Pièces jointes

  • tests JP.zip
    33.4 KB · Affichages: 141
  • tests JP.zip
    33.4 KB · Affichages: 151
  • tests JP.zip
    33.4 KB · Affichages: 140

eniotacom

XLDnaute Nouveau
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Merci
ça semble convenir mais il me dit bibliothèque inconnue

quand je suis dans l'éditeur macro et que je met outil référence il m'affiche manquant : solver.xla...

je cherche la solution je dois pas être le premier
 

vbacrumble

XLDnaute Accro
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Bonjour

J'ai eu ce message d'erreur avec ta pièce jointe eniotacom
Pas avec celle de pierrejean.
Mais entre temps , j'ai décoché Solveur dans Macros complémentaires
puis fermer Excel et réouvert Excel, puis recocher Solveur

et j'ai ouvert le fichier de pierrejean (qui a fonctionné sans broncher)

Je vais essayer de réouvrir ta pièce jointe.

EDITION
: toujours aucun message avec le fichier de pierrejean

Par contre toujours un message d'erreur avec ton fichier, eniotacom
 
Dernière édition:

eniotacom

XLDnaute Nouveau
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Hé bien impossible d'exécuter la macro quoiqu'il arrive pour moi...

et également impossible de trouver le solver.xla.

En tout cas un grand merci pour le code.
espérons que je solutionnerai le problème en moins de 10 jrs :p

En capture d'écran ce qu'il me met pour solver.xla.

mais à part ça j'ai l'impression que le code s'arrête sur le mot LEFT... qui sert à défini la colonne...


Edition :

j'ai crée le fichier sous 2003, et la je suis sous 2007 à essayer de l'exécuter... ça doit jouer
 

Pièces jointes

  • Sans titre.PNG
    Sans titre.PNG
    14.5 KB · Affichages: 193
  • Sans titre.PNG
    Sans titre.PNG
    14.5 KB · Affichages: 206
  • Sans titre.PNG
    Sans titre.PNG
    14.5 KB · Affichages: 215
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Boinjour eniotacom, PierreJean, vbecrumble,

Regarde du côté Outils/Macros/Macros complémentaires et cocher Solveur.

Pour 2007, je ne connais pas les menus pour y parvenir.

Bonne fin d'après-midi.

Jean-Pierre
 

vbacrumble

XLDnaute Accro
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Bonsoir jeanpierre


Tu n'as pas de message d'erreur avec le fichier de eniotacom ? :confused:

(Si tu l'ouvres sans rien toucher à ta configuration d'Excel)


PS: Par défaut, j'ai toujours l'utilitaire d'analyse et le solveur cochés
 

pierrejean

XLDnaute Barbatruc
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

bonsoir a tous

J'ai bien le solveur en macros complementaires (depuis peu d'ailleurs)
Il m'a fallu le CD d'Office pour l'installer
par contre rien de semblable dans les References Vba

Ps : j'ai egalement l'utitaire d'analyse et je suis en EXCEL 9.0 Office 2000
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Bonsoir pierrejean


Voila ce que j'ai en ouvrant ton fichier
(que je n'ai pas avec le fichier de eniotacom)

vbef.jpg


Et par défaut SOLVER.xla est coché quand j'ouvre Excel ??
Que je décoche puis récoche, toujours un message d'erreur avec son fichier.
 
Dernière édition:

eniotacom

XLDnaute Nouveau
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

je ne l'ai pas créer sur le même ordinateur.

et impossible de trouver solver.xla sur le cd d'office. j'ai pourtant tout installer en exécuter tout depuis le disque dur...

bref...

ou alors j'ai une version trop petite de office 2007 j'ia pas une version entreprise..
 

vbacrumble

XLDnaute Accro
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Re


Il faut l'installer en faisant Ajouter Composants

en allant dans Panneau de Configuration/Installation de Programmes

Microsoft Office /Modifier


(Enfin c'est comme cela sous Excel 2000 )
 

jeanpierre

Nous a quitté
Repose en paix
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

Re tous,

Souvent j'ai des messages d'erreur, voire même l'impossiblité d'aller plus loin, mais là : "Tu n'as pas de message d'erreur avec le fichier de eniotacom ? :confused:", non.... (alors que souvent je ne peux utiliser les macros qui font appel qu solveur, donc je ne comprends pas)

Regarder aussi si "Utilitaire d'analyse - VBA" est coché, valable sur un autre fil avec la fonction "fin de semaine" si je me souviens bien... ou un truc sur weel-end....

Pas sûr que cela vienne de là, mais bon...

Bonne soirée.

Jean-Pierre
 

eniotacom

XLDnaute Nouveau
Re : Solver en VBA Fonction SOLVEROK SOLVERADD et

J4ai trouver la solution


en fait j'avais bien le solver.xla mais das un dossier s'appelant

Office12/library/solver

et pour le voir il fallait que je fasse afficher tous les types de fichiers...


Bref 2h de lutte mais j'ai la solution.
Et en plus ça marche Parfaitement.

Merci beaucoup à tous pour votre aide.
je reviendrais.

cela dit je vais peut être en aider beacoup avec mon histoire.

tchuss
 

Discussions similaires

Réponses
8
Affichages
478

Statistiques des forums

Discussions
312 520
Messages
2 089 290
Membres
104 088
dernier inscrit
said4u