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é):
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.
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]
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
Dernière édition: