Probleme formule
Résolu
messin57000
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
messin57000 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
messin57000 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème , bon je sais pas trop comment expliquer mais dans mon fichier aujourd huit j'ai un tableau ou sont marqué les données d'une pompes centrifuge ( courant, puissance, debit ...) et pour chacun de ces données on les modélise par une équation de degré 6 avec coéfficient devant ( a0, a1 ... a6) ce qui donne y=a0+a1*Q+a2*Q^2 ... +a6*Q^6.
Mon probleme c'est que ces coefficient je l'es ai eu ( droitereg) dans un tableau à part, et quand je rentre ma formule dans la cellule j'ai que l'emplacement de chaque coeff, alors que moi je veu que sur la formule apparaisse la valeur brut du coeff!!
c'est a dire par exemple , pour le coeff a0 supposon il est dans B3 dans la formule j'aurai = B3+B4*... alors que moi je veu sa valeur qui apparai dans la formule par exemple 1.2365 + 0.12364*Q+...
Pourrai-je avoir de l'aide??
Je vous remerci
J'ai un problème , bon je sais pas trop comment expliquer mais dans mon fichier aujourd huit j'ai un tableau ou sont marqué les données d'une pompes centrifuge ( courant, puissance, debit ...) et pour chacun de ces données on les modélise par une équation de degré 6 avec coéfficient devant ( a0, a1 ... a6) ce qui donne y=a0+a1*Q+a2*Q^2 ... +a6*Q^6.
Mon probleme c'est que ces coefficient je l'es ai eu ( droitereg) dans un tableau à part, et quand je rentre ma formule dans la cellule j'ai que l'emplacement de chaque coeff, alors que moi je veu que sur la formule apparaisse la valeur brut du coeff!!
c'est a dire par exemple , pour le coeff a0 supposon il est dans B3 dans la formule j'aurai = B3+B4*... alors que moi je veu sa valeur qui apparai dans la formule par exemple 1.2365 + 0.12364*Q+...
Pourrai-je avoir de l'aide??
Je vous remerci
A voir également:
- Probleme formule
- Formule si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel colonne - Guide
- Excel mise en forme conditionnelle formule - Guide
4 réponses
Bonjour,
alors tu as écrit :
= B3+B4*...
Pour avoir :
1.2365 + 0.12364*Q+...
écrit ca :
=gauche(B3;nbcar(B3)+gauche(B4;nbcar(B4)*Q+....
alors tu as écrit :
= B3+B4*...
Pour avoir :
1.2365 + 0.12364*Q+...
écrit ca :
=gauche(B3;nbcar(B3)+gauche(B4;nbcar(B4)*Q+....
Merci pour votre réponse rapide , mais je pense pour moi ça sera le meme probleme car je souhaite que dans ma formule les valeur brut apparaissent sans que je sois amener à les taper manuellement, alors que dans ta solution dans la formule j'aurai pas les valeur brut.
ce que je veux c'est avoir 1.2365 + 0.12364*Q... dans ma formule pas le résultat de la formule, je dois mal m'exprimer !
je sais pas si ca existe une fonction ou faut il peut etre faire une macro...
ce que je veux c'est avoir 1.2365 + 0.12364*Q... dans ma formule pas le résultat de la formule, je dois mal m'exprimer !
je sais pas si ca existe une fonction ou faut il peut etre faire une macro...
Bonjour,
voici un exemple et vous verrez que ma formule convient :
https://www.cjoint.com/?CIcle7YiEoO
voici un exemple et vous verrez que ma formule convient :
https://www.cjoint.com/?CIcle7YiEoO
Oui votre formule marche bien mais le probleme c'est qu'elle donne le resultat que je veut mais dans la cellule pas dans la formule de la cellule. je dois mal m'exprimer.
Voici un exemple c'est marquer en rouge ce que je veut et en jaune la cellule en question.
http://cjoint.com/13sp/CIclq0JiVvT.htm
merci
Voici un exemple c'est marquer en rouge ce que je veut et en jaune la cellule en question.
http://cjoint.com/13sp/CIclq0JiVvT.htm
merci
Bonjour,
Sans détruire ta formule, une fonction personnalisée qui affiche (dans une autre cellule donc) les paramètres évalués.
Les références à évaluer doivent être dans des plages nommées qui commence par "ev_" :

Le découpage de la formule se limite aux opérateurs simples, et les références à évaluer doivent avoir une seule lettre. Suffisant pour ta demande, et beaucoup de travail en plus pour des références sur 2 lettres et plus.
https://www.cjoint.com/c/CIcmNeWLTjh
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Sans détruire ta formule, une fonction personnalisée qui affiche (dans une autre cellule donc) les paramètres évalués.
Les références à évaluer doivent être dans des plages nommées qui commence par "ev_" :
Function evalParamFormule(formule As Range) Dim f2 As String, fEval As String, param As Variant, f Dim pl As Range, pl2 As Range, nom As Name, i As Long fEval = formule.Formula f2 = formule.Formula If Left(f2, 1) <> "=" Then evalParamFormule = CVErr(xlErrValue) Exit Function End If f2 = Mid(f2, 2) f2 = Replace(Replace(Replace(Replace(Replace(Replace(f2, "+", "µ"), "-", "µ"), "*", "µ"), "/", "µ"), "(", "µ"), ")", "µ") ' découpage de la formule sur +, -, *, /, (, et ) pour récup des paramètres param = Split(f2, "µ") For i = 0 To UBound(param) 'pour chaque paramètre Set pl = Nothing On Error Resume Next Set pl = Range(param(i)) On Error GoTo 0 If Not pl Is Nothing Then ' si le paramètre est une référence For Each nom In Names 'pour chaque nom If Left(nom.Name, 3) = "ev_" Then ' si le nom commence par ev_ Set pl2 = Intersect(Range(nom), pl) If Not pl2 Is Nothing Then If Intersect(Range(nom), pl).Count = pl.Count Then 'et que le paramètre intégralement est inclus dans le nom fEval = Replace(fEval, param(i), Range(param(i)).Value) End If End If End If Next nom End If Next i evalParamFormule = fEval End Function

Le découpage de la formule se limite aux opérateurs simples, et les références à évaluer doivent avoir une seule lettre. Suffisant pour ta demande, et beaucoup de travail en plus pour des références sur 2 lettres et plus.
https://www.cjoint.com/c/CIcmNeWLTjh
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
bonjour Eric,
J'ai essayé ta méthode Eric j'y arrive pas a avoir le resultat voulu vu que les coefficient n'apparaissent pas en brut ça doit être un probleme dans la macro quand je l'ai appliqué sur ma feuille excel... ( je maitrise pas encore le language VBA ^^) .
Voici le lien de ma feuille ou j'ai essayé d'appliquer la fonction :)
http://cjoint.com/13sp/CIcoPVQIRdg.htm
Merci Pour ta reponse
Youssef
J'ai essayé ta méthode Eric j'y arrive pas a avoir le resultat voulu vu que les coefficient n'apparaissent pas en brut ça doit être un probleme dans la macro quand je l'ai appliqué sur ma feuille excel... ( je maitrise pas encore le language VBA ^^) .
Voici le lien de ma feuille ou j'ai essayé d'appliquer la fonction :)
http://cjoint.com/13sp/CIcoPVQIRdg.htm
Merci Pour ta reponse
Youssef
Re,
Les références à évaluer doivent être dans des plages nommées qui commence par "ev_"
Il ne manque que ça.
Je me base dessus pour savoir s'il faut évaluer la référence ou non. Elle doit appartenir intégralement à une plage dont le nom commence par ev_
Sélectionne B19:H19 et nomme la plage ev_1 (ou ev_ce_qu_tu_veux)
eric
Les références à évaluer doivent être dans des plages nommées qui commence par "ev_"
Il ne manque que ça.
Je me base dessus pour savoir s'il faut évaluer la référence ou non. Elle doit appartenir intégralement à une plage dont le nom commence par ev_
Sélectionne B19:H19 et nomme la plage ev_1 (ou ev_ce_qu_tu_veux)
eric
J'ai fait évoluer un peu la fonction.
Ajout de 2 paramètres optionnels :
- nbSignificatifs : nombre de chiffres significatifs conservés (6 par défaut)
- ing : notation ingénieur, puissances de 10 multiples de 3 (FAUX par défaut)
https://www.cjoint.com/?CIcrmgjRS5S
eric
edit: je crois qu'il y a une erreur dans l'exposant mais pas le temps de corriger. Ce soir sans doute...
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Ajout de 2 paramètres optionnels :
- nbSignificatifs : nombre de chiffres significatifs conservés (6 par défaut)
- ing : notation ingénieur, puissances de 10 multiples de 3 (FAUX par défaut)
https://www.cjoint.com/?CIcrmgjRS5S
eric
edit: je crois qu'il y a une erreur dans l'exposant mais pas le temps de corriger. Ce soir sans doute...
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Fonction corrigée :
https://www.cjoint.com/?CIct3wJ3l6d
eric
Function evalParamFormule(formule As Range, Optional nbSignificatifs As Long = 6, Optional ing As Boolean = False) ' évalue certains paramètres de la formule ' ceux dont la référence appartient à une plage dont le nom commence par ev_ sont évalués ' ces plages doivent être limitées aux colonnes A:Z ' Paramètres optionnels ' nbSignificatifs: nombre de chiffres significatifs à afficher ' ing: affichage au format ingénieur (exposant multiple de 3) Dim a19 As String, fEval As String, param As Variant, a Dim pl As Range, pl2 As Range, nom As Name, i As Long Dim Exposant As Long, Parts() As String, valeur As String fEval = formule.Formula a19 = formule.Formula If Left(a19, 1) <> "=" Then evalParamFormule = CVErr(xlErrValue) Exit Function End If a19 = Mid(a19, 2) a19 = Replace(Replace(Replace(Replace(Replace(Replace(a19, "+", "µ"), "-", "µ"), "*", "µ"), "/", "µ"), "(", "µ"), ")", "µ") ' découpage de la formule sur +, -, *, /, (, et ) pour récup des paramètres param = Split(a19, "µ") For i = 0 To UBound(param) 'pour chaque paramètre Set pl = Nothing On Error Resume Next Set pl = Range(param(i)) On Error GoTo 0 If Not pl Is Nothing Then ' si le paramètre est une référence For Each nom In Names 'pour chaque nom If Left(nom.Name, 3) = "ev_" Then ' si le nom commence par ev_ Set pl2 = Intersect(Range(nom), pl) If Not pl2 Is Nothing Then If Intersect(Range(nom), pl).Count = pl.Count Then 'et que le paramètre intégralement est inclus dans le nom Parts = Split(Format(Range(param(i)).Value, "0.0#############E+0"), "E") Exposant = 3 * Int(Parts(1) / 3) valeur = Round(Parts(0), nbSignificatifs - 1) * 10 ^ (Parts(1) - Exposant) If ing Then valeur = valeur & IIf(Exposant, "E" & Exposant, "") Else valeur = CDbl(valeur & "E" & Exposant) End If fEval = Replace(fEval, param(i), valeur) End If End If End If Next nom End If Next i evalParamFormule = Replace(fEval, "+-", "-") End Function
https://www.cjoint.com/?CIct3wJ3l6d
eric