Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 10h17   #1
Membre confirmé
 
Inscription : septembre 2009
Messages : 749
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 749
Points : 223
Points : 223
Par défaut [difficile] résolution d'équation

Bonjour,

J'ai une une équation à résoudre via Excel : 2.56 = ((A/B) + 1) x 1.225
=> il faut donc que je trouve les valeurs de A et de B

Là où ça se complique, c'est que j'ai une liste de valeurs : A et B doivent avoir l'une des valeurs de la liste.
=> il y aura donc une probabilité qu'il y ait plusieurs résultats possibles : je n'ai pas besoin de tous les avoir; un me suffit.

Là où ça se complique encore plus, c'est qu'il est (fortement) probable qu'il n'y ait aucune combinaison possible de la liste de valeur qui puisse résoudre l'équation => j'aimerais donc avoir le résultat le plus proche avec l'affichage du Delta de l'erreur.

=> ça vous semble possible à faire ?

Merci d'avance,

Remarque : si vous pensez qu'il y a un meilleur outil qu'Excel pour faire ça, ça ne me dérange pas d'en changer...
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 11h21   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 26
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 597
Points : 1 597
Envoyer un message via MSN à carden752
Bonjour,

Pourquoi ne pas calculer toutes les valeurs A/B et trouver la première valeur qui résoud l'équation soit A/B=2,56/1,225-1 ou à défaut la valeur la plus proche de 2,56/1,225-1.

Je ferais quelque chose de ce style calculer où dans C1 à C200, il y a les valeurs jusqu'à
Code :
=A200/B200-(2,56/1,225-1)
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 11h34   #3
Membre confirmé
 
Inscription : septembre 2009
Messages : 749
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 749
Points : 223
Points : 223
Mais comment fais-tu pour générer automatiquement toutes les valeurs de A/B à partir de la liste ?

faudrait qu'a partir de mes deux colonnes A et B que je puisse générer un tableau avec trois colonnes (A, B et A/B) qui contienne tous les résultat possible triés par ordre croissant de A/B.
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 11h35   #4
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Un code pas trop optimisé mais qui pourrait te permettre d'obtenr ce que tu souhaites :

Tu entres ta liste pour A dans la colonne A, pareil pour B avec la colonne B.
La macro te retourne le résultat de l'équation avec chaque couple A/B et t'affiche la solution si elle existe.
En colonne D, l'écart relatif avec 0.
Colonne E, rappel des valeurs de A et B pour le résultat obtenu

En espérant que ça te soit utile !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub trouverSolution()
 
Dim cel As Range, cel2 As Range
Dim i As Integer
 
i = 0
 
For Each cel In Range("A1:A15") 'si 15 valeurs dans la colonne A pour A par exemple
    For Each cel2 In Range("B1:B15")
        If cel2.Value = 0 Then
            Range("C1").Offset(i, 0) = "erreur div. par zéro"
        Else
            Range("C1").Offset(i, 0) = Round(((cel.Value / cel2.Value) + 1) * 1.225 / 2.56, 2)
            Range("D1").Offset(i, 0) = Range("C1").Offset(i, 0).Value / 100
            Range("E1").Offset(i, 0) = "A : " & cel.Value & " B : " & cel2.Value
            If Range("C1").Offset(i, 0) = 0 Then
                MsgBox "Solution : A = " & cel.Value & " et B = " & cel2.Value
            End If
        End If
        i = i + 1
    Next cel2
Next cel
 
End Sub
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 11h40   #5
Membre confirmé
 
Inscription : septembre 2009
Messages : 749
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 749
Points : 223
Points : 223
merci,

On est obligé d'utiliser VBA pour générer toutes les combinaisons possibles ?
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 12h08   #6
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Non, mais comme tu disais que ça ne te dérangeait pas de changer de méthode

Sinon, il me semble que la fonction INDIRECT pourrait t'aider. Ne la maitrisant pas, je ne m'avancerai pas à te conseiller là dessus, mais une petite recherche sur le forum devrait t'aider à y voir plus clair pour l'utiliser
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h17   #7
Membre confirmé
 
Inscription : septembre 2009
Messages : 749
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 749
Points : 223
Points : 223
oki, merci
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web