Guide VBA Excel : calcul, Solver, formules et interface utilisateur
Classé dans Informatique
Écrit le en
français avec une taille de 3,35 KB
Calcul de la taille de l'échantillon
'calcul de la taille de l'échantillon
observ = wsS.Cells(Rows.Count, 1).End(xlUp).Row - 1
nbre = wsS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
Plage des rendements
'plage des rendements = à partir de la ligne 11 et de la colonne 1
Set rgR = wsCalc.Cells(11, 1).Resize(observ, nbre - 1)
Nommer une plage
ThisWorkbook.Names.Add Name:="obj", RefersTo:=wsCalc.Range("C3")
Solver
Pour charger le Solver : Excel VBA > Outils > Référence > Parcourir, puis sélectionnez le fichier Solver.xla situé dans le répertoire : C:\Program Files (x86)\Microsoft Office\Office14\Library\SOLVER
Procédure dédiée au Solver
Function fnOpt() As Boolean
'Fonction mettant en place le modèle, retournant vrai ou faux selon que l'exécution a généré ou non une erreur
Dim ws As Worksheet
'Affectation de ws à la feuille "calcul"
Set ws = ThisWorkbook.Worksheets("calcul")
'Activation de la feuille
ws.Activate
'Réinitialisation du Solver
SolverReset
'Définition du 1er modèle : fonction objective : Range dans SetCell, MaxMinVal : 1 = max, 2 = min, 3 = valeur spécifique ; ByChange : variable
SolverOk SetCell:=Range("obj"), MaxMinVal:=2, ByChange:=Range("instr")
'Ajout de la contrainte : CellRef : membre de gauche ; Relation : 1 = <=, 2 = =, 3 = >= ; FormulaText : membre de droite
SolverAdd CellRef:=Range("inv"), Relation:=2, FormulaText:=1
'Interdiction de la vente à découvert
SolverOptions AssumeNonNeg:=True
'Modification du mode de gestion des erreurs (exécution forcée désormais)
On Error Resume Next
'Lancement du Solver (et récupération systématique de la solution proposée)
SolverSolve UserFinish:=True
'Cas où le Solver a généré un bug
If Err.Number > 0 Then
'Effacement des erreurs
Err.Clear
'Résultat "faux"
fnOpt = False
Else
'Résultat "vrai"
fnOpt = True
End If
'Retour au mode de gestion "normal" des erreurs (avec arrêt de l'exécution)
On Error GoTo 0
End Function
Formules en notation R1C1
wsC.Cells(2, 1).FormulaR1C1 = "=R[-1]C" : formule située 2 cases à gauche, même colonne.
Réplication sur 999 périodes
wsC.Cells(2, 1).Resize(1000, 4).FillDown
wsC.Cells(2, 3).FormulaR1C1 = "=IF(OR(R[-1]C=1,RC2>100),1,0)"
wsC.Cells(2, 4).FormulaR1C1 = "=IF(AND(RC[-1]=1,R[-1]C[-1]=0),RC1,0)"
Nombres aléatoires (RANDOM)
'Initialiser le générateur de nombres aléatoires
'Randomize doit être ajouté avant d'utiliser Rnd pour obtenir des valeurs réellement aléatoires
Randomize
'Nombre aléatoire entier entre 1 et 50 :
nombre_aleatoire = Int(50 * Rnd) + 1
MsgBox, InputBox et présentation
Chr(10) permet le retour à la ligne dans une MsgBox.
MsgBox "Exemple 1" & Chr(10) & "Exemple 2" & Chr(10) & Chr(10) & "Exemple 3"
InputBox
resultat = InputBox("Texte ?", "Titre", "Valeur par défaut")
Mise en forme d'une plage
Range("A11:D11")
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
=2=3