A fermer

ROGER2327

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Bonsoir equation


Demande originale...

L'équation étant en A2, pour a :
Code:
=CNUM(SI(ESTERR(CHERCHE("x²";A2));0;SI(CHERCHE("x²";A2)=1;1;SI(ESTNUM(GAUCHE(A2;CHERCHE("x²";A2)-1)+0);GAUCHE(A2;CHERCHE("x²";A2)-1);GAUCHE(A2;CHERCHE("x²";A2)-1)&1))))
pour b :
Code:
=CNUM(SI(ESTERR(CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)))));0;SI(ESTNUM(GAUCHE(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)));CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))))-1)+0);GAUCHE(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)));CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))))-1);GAUCHE(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)));CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))))-1)&1)))
pour c :
Code:
=CNUM(SI(ESTERR(CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)))));SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)));SI(NBCAR(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))))-CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))));DROITE(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)));NBCAR(SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1))))-CHERCHE("x";SI(ESTERR(CHERCHE("x²";A2));A2;SI(NBCAR(A2)-CHERCHE("x²";A2)=1;0;DROITE(A2;NBCAR(A2)-CHERCHE("x²";A2)-1)))));0)))
Amusant !​


ROGER2327
#5867


Dimanche 22 Palotin 139 (Saints Palotins des Phynances - fête Suprême Seconde)
22 Floréal An CCXX, 9,6989h - fritillaire
2012-W19-5T23:16:39Z
 

Pièces jointes

  • XLD_184329_Equation_du_second degré.xlsx
    10.7 KB · Affichages: 52

Papou-net

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Bonjour equation, Roger, le Forum,

@ Roger :
Effectivement c'est amusant.

@ equation :
Et comme ça m'amuse également, je te propose une autre solution avec 3 fonctions personnalisées.
A toi de voir ce qui te convient.

Cordialement.
 

Pièces jointes

  • Equations.xlsm
    14.9 KB · Affichages: 44
  • Equations.xlsm
    14.9 KB · Affichages: 47
  • Equations.xlsm
    14.9 KB · Affichages: 47
J

JJ1

Guest
Re : Extraction de coefficients d'une équation du second degré

Bonjour à tous,

Quelle formule! Roger, à vouloir tant mettre CHERCHE(), il faudra aussi qu'elle TROUVE() (mais ça je n'en doute pas!!!) Amusant !

A+
 

13GIBE59

XLDnaute Accro
Re : Extraction de coefficients d'une équation du second degré

Bonjour à tous.

Incroyable et extraordinaire Roger ! Un vrai et pur génie comme on les aime sur le forum.
Sinon, plus simple (à mon niveau, quoi...) en pièce jointe.

A plus.
 

Pièces jointes

  • ax2+bx+c=0.xls
    17.5 KB · Affichages: 46

Papou-net

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Bonjour à tous,
Bonjour Jean-Bernard,

Sauf mauvaise interprétation de ma part, notre ami equation cherche à récupérer les valeurs des variables a, b et c et non à résoudre l'équation. C'est d'ailleurs ce que font les formules alambiquées de Roger, à qui je tire mon chapeau.

Bon WE.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

RE :

Désolé equation, je n'avais pas envisagé des valeurs négatives pour a, b et c.

Voilà qui est réparé.

NB : j'ai mis la cellule de formule au format Texte, car en cas de a négatif on obtenait un message d'erreur.

Cordialement.
 

Pièces jointes

  • Equations 01.xlsm
    15.8 KB · Affichages: 40

Papou-net

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Merci Papou, mais le problème c'est que chez moi ça met =EquA(A2) et ya pas la formule affichée. c'est normal ?

Oui, c'est normal car c'est une fonction personnalisée que j'ai créée en VBA.

A partir de là, si tu te places dans une cellule et tu lances la commande Insertion ... Fonction et que tu sélectionnes Personnalisées, tu trouveras les 3 fonctions EquA, EquB et EquC.

Pour faire plis simple, tu écris dans n'importe quelle cellule :
Code:
=equa(a1)
et tu obtiendras la valeur de a. De même pour b (=equb(a1)) et c (=equc(a1)).

Et pis c'est tout.

Cordialement.
 

ROGER2327

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Re...

(...)
La formule de Roger est trop longue est trop compliqué, dommage.
Dommage. P'têt' ben qu'on peut les raccourcir. Mais je ne sais pas comment. P'têt ben qu'on peut suivre Papou-net et envisager une fonction personnalisée en VBA. En voici une autre, appliquée dans le classeur joint :​
VB:
Function Eq(x$)
Dim e, i%, c(2), p()
    If x <> "" Then
        p = Array("x²", "x")
        For i = 0 To 1
            If InStr(1, x, p(i)) Then
                e = Split(x, p(i))
                c(i) = e(0)
                If c(i) = "" Or c(i) = "+" Then
                    c(i) = 1
                ElseIf c(i) = "-" Then
                    c(i) = -1
                End If
                c(i) = c(i) + 0
                x = e(1)
            End If
        Next
        If x = "" Then c(2) = 0 Else c(2) = x
        c(2) = c(2) + 0
    Else
        c(0) = "": c(1) = "": c(2) = ""
    End If
    Eq = c
End Function
On récupère le résultat sous forme matricielle dans une plage de trois cellules contigües en ligne comme je l'ai fait dans le classeur joint, ou bien on récupère individuellement chaque coefficient comme suit : si l'équation est en B4, pour a :
Code:
=eq(B4)
ou
Code:
=INDEX(eq(B4);1)
pour b :
Code:
=INDEX(eq(B4);2)
pour c :
Code:
=INDEX(eq(B4);3)

P'têt ben que ce n'est pas trop compliqué.​


Bon courage.


ROGER2327
#5868


Lundi 23 Palotin 139 (Saints Quatrezoneilles, Herdanpo, Mousched - Gogh, Palotins - fête Suprême Quarte)
23 Floréal An CCXX, 6,4081h - bourrache
2012-W19-6T15:22:46Z
 

Pièces jointes

  • XLD_184329_Equation_du_second degré.xlsm
    18.3 KB · Affichages: 36

ROGER2327

XLDnaute Barbatruc
Re : Extraction de coefficients d'une équation du second degré

Suite...


À la relecture du code proposé plus haut, je corrige :​
VB:
Function Eq(x$)
Dim e, i%, c(), p()
    p = Array("x²", "x")
    ReDim c(UBound(p) + 1)
    If x <> "" Then
        For i = 0 To UBound(p)
            If InStr(1, x, p(i)) Then
                e = Split(x, p(i))
                c(i) = e(0)
                If c(i) = "" Or c(i) = "+" Then
                    c(i) = 1
                ElseIf c(i) = "-" Then
                    c(i) = -1
                End If
                c(i) = c(i) + 0
                x = e(1)
            End If
        Next
        If x = "" Then c(i) = 0 Else c(i) = x
        c(i) = c(i) + 0
    Else
        For i = 0 To UBound(c): c(i) = "": Next
    End If
    Eq = c
End Function
Cela ne change rien pour le problème proposé, mais ces modifications permettent l'adaptation rapide à des polynômes d'autres degrés.

Si l'on veut traiter des polynômes de degré 4 écrit sous la forme
Code:
ax^4+bx^3+cx^2+dx+e
pour obtenir les coefficients a, b, c, d et e, il suffit de remplacer
Code:
    p = Array("x²", "x")
par
Code:
    p = Array("x^4", "x^3", "x^2", "x")
tout le reste étant identique.
Reste à prouver l'utilité de telles manipulations...​


ROGER2327
#5870


Lundi 23 Palotin 139 (Saints Quatrezoneilles, Herdanpo, Mousched - Gogh, Palotins - fête Suprême Quarte)
23 Floréal An CCXX, 9,0195h - bourrache
2012-W19-6T21:38:48Z
 

Statistiques des forums

Discussions
312 520
Messages
2 089 291
Membres
104 089
dernier inscrit
salimgtu