OVH Cloud OVH Cloud

solveur excel et VBA

2 réponses
Avatar
fulgar
Bonjour,

Je cherche le zero d'une fonction qui met en jeu plusieurs fonctions excels
personnelles que j'ai créé sous VBA. Je voudrais utiliser pour cela le
solveur excel dans mes programmes VBA qui peut remplir cette fonction.
Y-a-t-il un moyen de faire cela et comment.Au pire y-a t-il des algotithmes
de recherche de zero de fonctions que je puisse trouver sous excel via
internet ou autre ?(genre méthode de dichotomie, newton raphson etc...)

merci pour votre aide

2 réponses

Avatar
Yvan
Bonjour

Pour la dichotomie, j'ai çà:

Option Explicit
Public Function Dichotom(dblMin As Double, dblMax As Double, dblEpsilon As Double) As
Variant
'
' Résolution par dichotomie de l'équation Fonc_Dichotom(x) = 0
'
' La fonction est à renseigner.
'
' Les conditions d'application de la dichotomie doivent être vérifiées au préalable.
' - Monotonie de la fonction sur l'intervalle
' - Images des bornes de l'intervalle par la fonction de signe opposé
' Si ces conditions ne sont pas respectées, il est possible qu'une solution soit
trouvée
'mais elle ne peut être garantie unique.
'
' Si la procédure échoue, il n'y a pas de solutions ou les conditions d'application
de la
'méthode par dichotomie ne sont pas vérifiées
'
'
'
Const strErreur As String = "Echec Dichotomie"
Dim dblVar As Double, y As Double
If dblEpsilon < 0.000000000000001 Then dblEpsilon = 0.000000000000001
If dblMax < dblMin Then
dblVar = dblMin
dblMin = dblMax
dblMax = dblVar
End If
dblVar = (dblMin + dblMax) / 2
y = Fonc_Dichotom(dblVar)
If (dblMax - dblMin < dblEpsilon) Then
Dichotom = strErreur
If y < dblEpsilon Then Dichotom = dblVar
Exit Function
End If
If Fonc_Dichotom(dblMin) * Fonc_Dichotom(dblMax) > 0 Then
Dichotom = strErreur
Exit Function
End If
If Fonc_Dichotom(dblMin) * y > 0 Then dblMin = dblVar Else dblMax = dblVar
Dichotom = Dichotom(dblMin, dblMax, dblEpsilon)
End Function

Public Function Fonc_Dichotom(dblX As Double) As Double
' a renseigner
End Function


Bien sûr, il reste à vérifier que la dichotomie est toujours applicable dans ton cas
ou adapter cette procédure.

Mais enfin, si çà peut te dépanner!

@+

Yvan







"fulgar" a écrit dans le message de news:
%
| Bonjour,
|
| Je cherche le zero d'une fonction qui met en jeu plusieurs fonctions excels
| personnelles que j'ai créé sous VBA. Je voudrais utiliser pour cela le
| solveur excel dans mes programmes VBA qui peut remplir cette fonction.
| Y-a-t-il un moyen de faire cela et comment.Au pire y-a t-il des algotithmes
| de recherche de zero de fonctions que je puisse trouver sous excel via
| internet ou autre ?(genre méthode de dichotomie, newton raphson etc...)
|
| merci pour votre aide
|
|
|
Avatar
fulgar
merci c'est meiux que rien
;-)



"Yvan" <yvan.echanges(enlever ceci)@free.fr> a écrit dans le message de
news: eGgGc#
Bonjour

Pour la dichotomie, j'ai çà:

Option Explicit
Public Function Dichotom(dblMin As Double, dblMax As Double, dblEpsilon As
Double) As

Variant
'
' Résolution par dichotomie de l'équation Fonc_Dichotom(x) = 0
'
' La fonction est à renseigner.
'
' Les conditions d'application de la dichotomie doivent être vérifiées au
préalable.

' - Monotonie de la fonction sur l'intervalle
' - Images des bornes de l'intervalle par la fonction de signe
opposé

' Si ces conditions ne sont pas respectées, il est possible qu'une
solution soit

trouvée
'mais elle ne peut être garantie unique.
'
' Si la procédure échoue, il n'y a pas de solutions ou les conditions
d'application

de la
'méthode par dichotomie ne sont pas vérifiées
'
'
'
Const strErreur As String = "Echec Dichotomie"
Dim dblVar As Double, y As Double
If dblEpsilon < 0.000000000000001 Then dblEpsilon = 0.000000000000001
If dblMax < dblMin Then
dblVar = dblMin
dblMin = dblMax
dblMax = dblVar
End If
dblVar = (dblMin + dblMax) / 2
y = Fonc_Dichotom(dblVar)
If (dblMax - dblMin < dblEpsilon) Then
Dichotom = strErreur
If y < dblEpsilon Then Dichotom = dblVar
Exit Function
End If
If Fonc_Dichotom(dblMin) * Fonc_Dichotom(dblMax) > 0 Then
Dichotom = strErreur
Exit Function
End If
If Fonc_Dichotom(dblMin) * y > 0 Then dblMin = dblVar Else dblMax dblVar
Dichotom = Dichotom(dblMin, dblMax, dblEpsilon)
End Function

Public Function Fonc_Dichotom(dblX As Double) As Double
' a renseigner
End Function


Bien sûr, il reste à vérifier que la dichotomie est toujours applicable
dans ton cas

ou adapter cette procédure.

Mais enfin, si çà peut te dépanner!

@+

Yvan







"fulgar" a écrit dans le message de news:
%
| Bonjour,
|
| Je cherche le zero d'une fonction qui met en jeu plusieurs fonctions
excels

| personnelles que j'ai créé sous VBA. Je voudrais utiliser pour cela le
| solveur excel dans mes programmes VBA qui peut remplir cette fonction.
| Y-a-t-il un moyen de faire cela et comment.Au pire y-a t-il des
algotithmes

| de recherche de zero de fonctions que je puisse trouver sous excel via
| internet ou autre ?(genre méthode de dichotomie, newton raphson etc...)
|
| merci pour votre aide
|
|
|