Probleme formule
Résolu/Fermé
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
-
2 sept. 2013 à 09:12
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - 11 sept. 2013 à 13:46
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - 11 sept. 2013 à 13:46
A voir également:
- Probleme formule
- Formule si et - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel moyenne - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule excel - Guide
4 réponses
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
2 sept. 2013 à 09:42
2 sept. 2013 à 09:42
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+....
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 10:00
2 sept. 2013 à 10:00
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...
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
2 sept. 2013 à 11:05
2 sept. 2013 à 11:05
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
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 11:17
2 sept. 2013 à 11:17
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
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
2 sept. 2013 à 12:06
2 sept. 2013 à 12:06
Re,
je ne sais pas faire et je ne crois pas que ce soit possible.
soit tu écris en dur tes coefficients
soit tu laisses ta formule comme ca.
je laisse la place à quelqu'un d'autre.
je ne sais pas faire et je ne crois pas que ce soit possible.
soit tu écris en dur tes coefficients
soit tu laisses ta formule comme ca.
je laisse la place à quelqu'un d'autre.
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 14:47
2 sept. 2013 à 14:47
Merci en tout cas c'est gentille d'avoir voulu m'aider :)
Youssef
Youssef
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 2/09/2013 à 12:42
Modifié par eriiic le 2/09/2013 à 12:42
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.
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 14:47
2 sept. 2013 à 14:47
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 2/09/2013 à 16:31
Modifié par eriiic le 2/09/2013 à 16:31
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
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 16:42
2 sept. 2013 à 16:42
Merci Eric ca marche en fait je savais pas comment nommer une plage...
Merci beaucoup pour ton aide :)
Merci beaucoup pour ton aide :)
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
2 sept. 2013 à 17:10
2 sept. 2013 à 17:10
Bonjour messin57000,
J'aurais plutôt pensé à la fonction CONCATENER... qui devrait éviter de nommer une plage et l'usage de VBA...
A+
J'aurais plutôt pensé à la fonction CONCATENER... qui devrait éviter de nommer une plage et l'usage de VBA...
A+
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
2 sept. 2013 à 21:40
2 sept. 2013 à 21:40
Bonjour Zoul67,
oui effectivement j'avais pensé à ca aussi mais c'est quand même plus propre quand on maitrise le language vba mais sinon oui ta raison concatener c'était le seul recours :)
A plus
oui effectivement j'avais pensé à ca aussi mais c'est quand même plus propre quand on maitrise le language vba mais sinon oui ta raison concatener c'était le seul recours :)
A plus
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 2/09/2013 à 17:21
Modifié par eriiic le 2/09/2013 à 17:21
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.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 2/09/2013 à 19:57
Modifié par eriiic le 2/09/2013 à 19:57
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
messin57000
Messages postés
67
Date d'inscription
lundi 2 septembre 2013
Statut
Membre
Dernière intervention
9 décembre 2013
11 sept. 2013 à 13:46
11 sept. 2013 à 13:46
Merci Eric pour ta réponse :)