Traduire une longue formule excel en VBA

Résolu/Fermé
CILE78 Messages postés 7 Date d'inscription samedi 21 septembre 2013 Statut Membre Dernière intervention 2 mars 2015 - Modifié par Whismeril le 22/02/2015 à 19:04
CILE78 Messages postés 7 Date d'inscription samedi 21 septembre 2013 Statut Membre Dernière intervention 2 mars 2015 - 2 mars 2015 à 16:36
Bonjour,

Je dois réaliser un tableau qui en fonction de plusieurs critères (mode de détention de la propriété, délai remboursement du crédit, ...) va déterminer une solution.
J'ai rédigé ma formule mais elle est trop longue pour excel et, après avoir modifier les si en if, les ou en or et et en and, je l'ai collé sur le formulaire VBA. Mais cela ne fonctionne pas.
Est-ce que vous avez une idée de comment la rédiger pour qu'elle fonctionne ?
Merci


 Range("E37:O37").Select
    Application.FormulaBarHeight = 6
    ActiveCell.FormulaR1C1 =
"=IF(AND(propriete=""pleine propriété"",qshi>dureeresiduelle,carhi>dureeresiduelle,causeredepot=""-"",specificite=""-"",relogement=""oui"",evolutioncar=""non""),""plan vente 1"",""IF(AND(propriete=""pleine propriété"",qshi>dureeresiduelle,carhi>dureeresiduelle,OR(specificite=""necessaire à la vie professionnelle"",specificite=""adapté à une situation particulière"",relogement=""non (à expliciter dans observations particulières)"",evolutioncar=""oui (à expliciter dans observations particulières)"")),""à discuter ou moratoire/plan pour vente 2 3 4"",""IF(AND(propriete=" " pleine propriété"",qshi>dureeresiduelle,carhi>dureeresiduelle,OR(causeredepot=""marché immobilier difficile"",causeredepot=""autre (à expliciter dans obs°)"",causeredepot=""non demandé dans précédent plan")),""moratoire/plan pour vente ou PRP avec LJ5-6-7"",IF(AND(propriete=""pleine propriété"",qshi>dureeresiduelle,carhi>dureeresiduelle,causeredepot=""refus de vendre""),""Irrecevable ou moratoire/plan pour vente ou PRP avec LJ 8"" , IF(AND(propriete=""pleine propriété"",qshi>dureeresiduelle,carhi<dureeresiduelle,causeredepot=""-"",specificite=""-"",relogement=""oui"",evolutioncar=""non"")), ""plan vente 9"","AUTRES SOLUTIONS"

Range("A38:O38").Select
End Sub


EDIT: Ajout de la coloration syntaxique.

A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 23/02/2015 à 08:39
Bonjour

pleine propriété, qshi.....
sont des variables ?

si oui, pourquoi écrire une formule ? mettre le résultat de traitements VBA éviterait de charger inutilement ta feuille...

D'autre part, tu voudrais avoir cette formule de E37 à O37 ?
tu dis...
Michel
0
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
23 févr. 2015 à 15:32
Bonjour,

Si je comprends bien c'est l'enregistreur de macro qui a écrit la base et comme le dit Michel, ce n'est pas la bonne façon d'utiliser VBA.

Le plus efficace est d'écrire une fonction avec ou sans argument qui pourra être utilisé dans la feuille et renverra le résultat comme une fonction Excel standard...

J'imagine, pour ma part que pleine propriété, qshi..... sont des cellules nommées.

La fonction à écrire se présenterait de cette façon (je n'ai reécrit que le début...) :

Public Function xyz() As String
If Range("propriete").Value = "pleine propriété" And Range("qshi").Value > Range("dureeresiduelle").Value _
And Range("carhi").Value > Range("dureeresiduelle").Value And Range("causeredepot").Value = "-" _
And Range("specificite").Value = "-" And Range("relogement").Value = "oui" And Range("evolutioncar").Value = "non" _
And Range("specificite").Value = "-" And Range("relogement").Value = "oui" Then
xyz = "plan vente 1"
'ElseIf Range("propriete").Value = "pleine propriété" And Range("qshi").Value > Range("dureeresiduelle").Value _
etc... (suite des condtions 2e cas......) Then
'xyz = résultat dans ce cas
Else
'xyz = résultat si pas dans les deux premières conditions
End If
End Function


Ensuite dans la feuille écrire juste la fonction = xyz()
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 févr. 2015 à 15:48
Bonjour

voir si on peut simplifier car (regard rapide donc...) propriété , qshi, carhi soànt les m^me conditions

rien nous dit à cette heure que "propriété", "qshi" etc sont des nom de cellules....
0
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
23 févr. 2015 à 15:59
Bonjour,
Non rien ne le dit de façon certaine, mais comme il semble vouloir réécrire une formule Excel, je ne vois pas vraiment ce que ça pourrait être d'autre que des plages nommées...
Mais comme souvent, sans fichier joint, on ne comprend pas forcément tout et en plus c'est nettement plus complexe....
0
CILE78 Messages postés 7 Date d'inscription samedi 21 septembre 2013 Statut Membre Dernière intervention 2 mars 2015
2 mars 2015 à 16:36
Il s'agit effectivement de cellules nommées.
J'ai détourné le problème en créant dans une feuille distincte plusieurs formules puis une qui prenait la solution de la formule qui était correcte.
Difficile effectivement de retranscrire par écrit le problème. La prochaine fois j'attacherai un fichier excel.
Merci à tous les deux pour votre aide.
0