Formule ? ou Code VBA ?
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re,
Je t'ai donné le principe de tatonnement par macro,
avec 1901 çà marchait (je parles de ton 1er fichier), maintenant c'est peut-être une autre
cellule qu'il faille prendre en compte ? , c'est tellement alambiqué !
à toi de voir.
dans mon fichier que tu ne peux pas ouvrir, j'avais viré tous les arrondis (çà fausse),
Avec tous mes soucis de nouveau matériel, j'ai pris du retard sur des projets en cours,
je ne pourrais pas suivre davantage ton fil, désolé !
amicalement
Claude.
Claude, merci encore une fois d'avoir tenté de m'aider.
Comme tu ne peux plus t'occuper de ce problème, j'espère que quelqu'un d'autre "relève le défi".
J'ai pensé à une autre solution, mais qui me semble moins bonne qu'un code VBA car elle couvrirait probablement moins de cas. Y a-t-il la possibilité - mais je doute fortement - d'inscrire une formule en K45 qui corresponde à quelque chose comme ça : "SI(on utilise la formule proposée par Thibo mais arrondie au franc et que le résultat fait que les cellules de Q36 à Q38 soient toutes négatives ; alors utiliser cette formule ; sinon utiliser la même formule mais arrondie à 5 centimes" ?
https://www.excel-pratique.com/~files/doc/QP3FTPlan_de_remboursement.zip
Bonne soirée à tous.
Bonsoir à tous,
J'ai encore essayé de simplifier ma demande dans l'espoir recevoir une réponse à mon problème :
https://www.excel-pratique.com/~files/doc/QhsGOPlan_de_remboursement.zip
Si vous avez essayé de trouver une solution, mais que celle-ci vous semble impossible, auriez-vous l'amabilité de me le faire savoir ?
Avec mes cordiales salutations.
Salut le forum
Pourquoi ne pas utiliser le solveur pour trouver une réponse adéquate.
Mytå
P.S. Petit problème de santé qui m'oblige a être tres peu disponible sur le forum, sinon un autre membre va prendre la relève.
Bonsoir le Forum, Salut Mytå,
J'ai essayé d'utiliser (pour la première fois) le solveur, mais je ne vois pas vraiment comment l'utiliser ici. Il faudrait avoir une cellule à définir et une cellule variable, alors que je n'ai qu'une cellule pour laquelle je cherche une valeur, par macro ou par formule.
Ou est-ce que tu veux dire qu'il faudrait utiliser le solveur dans un code VBA ? Mais ça je ne sais pas le faire.
L'idée de mon fichier étant évidement que plusieurs utilisateurs puissent l'employer sans complication et sans connaissances d'Excel.
Merci encore pour ton aide, Mytå. J'espère que quelqu'un puisse effectivement m'aider.
Bonne soirée.
Bonsoir tout le monde,
N'ayant toujours pas de solution à mon problème, je me permets de solliciter votre aide une nouvelle fois.
Tout est dit là-dedans :
https://www.excel-pratique.com/~files/doc/Qbg9MPlan_de_remboursement.zip
Avec mes cordiales salutations.
Re le forum
Mon avis personnel, fichier trop voluminieux et pour la langue connait pas.
Basis für einen Rückzahlungsplan : Ca mange quoi en hiver !Il faut deviner et se promener à droite, en haut, en bas et à gauche.
Je me suis pris une naussée à me promener.....
Mytå
Faire simple c'est pas compliqué.
Bonjour le Forum
Bonjour Myta,
Si mon fichier est bien compliqué, j’en suis désolé. Une trentaine de mes collègues – à la caisse de pension où je travaille, avec un effectif de 55'000 assurés – trouvent par contre que ma feuille de calculs leur rend très régulièrement de fiers services.
Quelques informations complémentaires à ceux qui voudraient toujours m’aider :
En l’état actuel, avec l’une des deux formules proposées par Thibo en K45, on trouve une solution à grosso modo 95 à 98 % des combinaisons possibles dans les cellules L36 à L40, les seules cellules que peuvent modifier les utilisateurs. Par tâtonnement par contre, on trouve une solution à 98 à 99 % des combinaisons possibles et on découvre également que peut-être 1 à 2 pourcents de ces combinaisons n’ont aucune solution possible. La macro ou la nouvelle formule à trouver devrait remplacer cette recherche manuelle par tâtonnement. Je suis toujours persuadé que cela est absolument réalisable.
Toutes les informations nécessaires se trouvent directement dans mon fichier. J’ai regroupé dans la partie visible à l’écran toutes les cellules nécessaires à la résolution de mon problème. Cette présentation est donc totalement différente de celle que je propose normalement aux utilisateurs.
Mon problème ne se trouve que dans la cellule K45 et dans calculs placés en K43:L286. Tous les autres calculs de la feuille fonctionnent parfaitement et n’auraient pas besoin d’être consultés. Comme ils sont cependant absolument nécessaires aux calculs effectués en K43:L286, je ne peux malheureusement pas les supprimer de cette feuille. Dans les cellules K46 et suivantes se trouve cette formule =SI(J46<=$Q$40-1;K45;ARRONDI((D46+S46)*2;1)/2) qui utilise effectivement directement les colonnes J, Q, D et S et indirectement toutes les autres colonnes.
J’ai malgré tout encore traduit tous les autres textes de cette feuille en français si vous désirez quand même aller voir ces autres calculs :
https://www.excel-pratique.com/~files/doc/dbSRWPlan_de_remboursement.zip
Je vous répète que les calculs placés en K43 :L286 permettent de saisir séparément – dans un programme de caisse de pension – les acomptes de remboursement du montant principal de la dette et l’intérêt. Cette information est transmise à l’utilisateur par l’intermédiaire des cellules de B8 à H15 (mais ce n’est pas important pour la résolution de mon problème).
Egalement comme simple information : Outre l’utilisation mentionnée dans le paragraphe ci-dessus, ma feuille de calcul permet encore de déterminer quelle serait le solde que devrait rembourser un débiteur après avoir payé un certain nombre d’acomptes ainsi que les corrections nécessaires que devrait que devraient effectué notre service de comptabilité (cellules B19 à F28).
Qui relève le défi ?
Bonne fin de semaine à vous tous.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Sans trop de discours, le but est d'obtenir "Non" dans les 3 cellules Q36 à Q38
C'est çà ?
merci de mettre un indice différent à chaque fois que tu envoie un nouveau fichier.
Claude.
Bonjour,
Le meilleur moyen d'obtenir une réponse est d'exposer son problème en quelques lignes.
Pour le moment, relever le défi ne consiste pas à résoudre ton probème, mais plus à le comprendre
Une fois arrivé au bout de ton exposé, on a oublié le début.
Donc, pour qu'on puisse t'aider à résoudre ton problème, donnes nous en 2 ou 3 lignes avec quelles valeurs (quelques exemples) tu rencontres un problème, en nous disant ceci :
Si je mets telle valeur dans la cellule X, j'obtiens un résultat dans la cellule Y. Or je voudrais un autre résultat (dire lequel) dans cette cellule Y (avec une petite explication sur le pourquoi du comment).
A te (re)lire
@+
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Salut thibo,
Solution par tatonnement pour obtenir "Non" en Q36:Q38
il faut un minimum d'acompte de 2,3% de la dette.
https://www.excel-pratique.com/~files/doc/Plan_de_remboursement4.zip
à tester
amicalement
Claude.
Salut Claude,
J'aimerais bien voir ta solution, mais malheureusement je n'arrive pas à ouvrir ton fichier. Je reçois systématiquement le message "Windows ne peut pas effectuer l'extraction. Impossible de créer le fichier de destination".
As-tu placé une formule ou un code en K45 ?
A une prochaine.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re,
çà m'inquiète cette histoire d'ouverture de fichier !
est_ce que d'autres visiteurs pourrait me signaler s'ils ont le même problème ?
sinon voici la macro, tu la lance avec un bouton,
Sub Tatonne()
'par Claude Dubois pour "yvouille" le 07/03/09
'Application.ScreenUpdating = False
Range("k45") = Range("L37")
If Range("L36") / Range("L37") > 45.5 Then
MsgBox ("Acompte trop petit")
Exit Sub
End If
'********** 1er tour *******
Do While Range("q36").Value = "Oui" Or Range("q37").Value = "Oui" Or Range("q38").Value = "Oui"
Range("k45") = Range("k45") - 10
Loop
'********** 2ème tour *******
Do While Range("q36").Value = "Oui" Or Range("q37").Value = "Oui" Or Range("q38").Value = "Oui"
Range("k45") = Range("k45") + 1
Loop
End SubClaude.
Claude,
Merci infiniment pour ton aide. Je ne sais si c'est moi qui n'arrive pas à utiliser ta macro correctement ou si elle ne fonctionne pas comme je le désirerais, mais il y a toujours un problème.
Voici un fichier où j'ai placé ton code avec un bouton "Tâtonne" pour le lancer : https://www.excel-pratique.com/~files/doc/P8ozTPlan_de_remboursement.zip
Ta macro fonctionne parfaitement avec la combinaison inscrite dans mon dernier message de L36 à L40 (combinaison aussi inscrite dans la feuille "Combinaisons", la première), mais si je change l'un ou plusieurs de ces paramètres, ta macro ne fonctionne pas toujours.
Ainsi, selon le nouvel exemple ci-joint, ta macro trouve un montant de 1'000.00 en K45 et indique qu'un acompte (celui inscrit au préalable en L37 ou celui calculé par ta macro en K45 ?????) de 1'000.00 francs suisses est trop petit, alors que par tâtonnement manuel, je trouve une solution en K45 (entre 934.85 et 938.95) avec un tel acompte de base de 1'000.00 en L37.
Pour cette même combinaison, la formule de Thibo arrondi au franc trouve aussi une solution (935.00) alors que la formule arrondie à 5 ct. ne trouve pas de solution (ou du moins une solution qui ne convient pas = 934.50).
Pour la deuxième combinaison inscrite dans ma feuille "Combinaison" , ta macro ne trouve pas non plus de solution, alors qu'une solution manuelle a été trouvée [dans cette même feuille, cellules C8].
Avec mes cordiales salutations.
Re-salut Claude, Salut Thibo,
Les messages arrivent à une telle vitesse, que j'en ai loupé quelques uns ! En ouvrant la page 4 de mon fil, je n'ai pas vu les deux derniers messages de la page 3. Désolé.
Ainsi Claude, je n'ai pas vu que tu me demandais d'inscrire à chaque fois un indice différent pour chaque nouveau fichier joint. J'y penserai à l'avenir.
Thibo, tu me demandais d'indiquer en trois lignes ce que je désirais comme résultat dans la cellule X si je mettais la valeur Y dans la cellule Z. Mais il y a déjà belle lurette que j'indique que si je place pratiquement n'importe quelles valeurs*** en L36:L40, il faudrait simplement que les cellules Q36 à Q38 soient toutes négatives. J'ai indiqué dans ma feuille "Combinaisons" des exemples de valeurs à placer en L36:L40 qui posent problème.
Je ne sais pas comment faire plus simple.
Bonne soirée.
***Tel qu'indiqué dans mon dernier fichier, nous travaillons toujours avec des mois pleins et c'était tellement évidement pour moi que je n'ai pas pensé de vous indiqué jusqu'à maintenant qu'il fallait toujours indiquer le premier d'un mois en L39 et L40. Mon calcul n'est pas non plus prévu pour un remboursement sur plus de 20 ans. Un message apparaît en M38 si ce délai est dépassé.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re,
arrête les discours et les fichiers au même nom , on tatonne !
essaye celui-là
Sub Tatonne2()
'par Claude Dubois pour "yvouille" le 07/03/09
'Application.ScreenUpdating = False
Range("k45") = Range("L37")
If Range("L36") / Range("L37") > 52 Then '*** à régler ****
MsgBox ("Acompte trop petit")
Exit Sub
End If
'********** 1er tour *******
Do While Range("q36").Value = "Oui" Or Range("q37").Value = "Oui" Or Range("q38").Value = "Oui"
Range("k45") = Range("k45") - 1
Loop
'********** 2ème tour *******
Do While Range("q36").Value = "Oui" Or Range("q37").Value = "Oui" Or Range("q38").Value = "Oui"
Range("k45") = Range("k45") + 1
Loop
End SubClaude.
Re-re-Salut Claude,
A propos de ton problème de fichiers illisibles, je pense maintenant que nous avons eu un problème au boulot et nous avons parfois dû enregistrer d’une manière un peu particulière des fichiers Excel 2007 au format 2003 afin que des personnes n’ayant pas la nouvelle version puissent les lire.
Essaye alors d’enregistrer tes fichiers Excel 2007 non pas avec l’option « Enregistrer sous / Excel 1997-2003 », mais avec l’option « Enregistrer sous / Autres formats » et là tu choisis sous « Type » le type « Classeur Excel 1997-2003 ».
Ca paraît un peu tordu, mais ça a fonctionné chez nous.
Pour mon problème à moi, ta nouvelle macro fonctionne parfaitement avec mes les deux dernières combinaisons inscrites sur mes deux derniers fichiers joints (combinaisons 1 et 4 inscrites sur ma feuille « Combinaisons ») mais si j’essaie avec la combinaison 3 (dans le nouveau fichier joint avec ta nouvelle macro), ça ne fonctionne malheureusement plus (manuellement je trouve la valeur de 19.75).
https://www.excel-pratique.com/~files/doc/Plan_de_remboursement_Yvouille_13.zip
Encore merci et bonne soirée.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Regarde dans les "Modèles" Excel tout prêt, en voici un.
https://www.excel-pratique.com/~files/doc/ghEc8AmortissementPret1.xlsx
Sinon pour ton usine à gaz, j'ai ajouté une variable.
Sub Tatonne3()
'par Claude Dubois pour "yvouille" le 08/03/09
'Application.ScreenUpdating = False
Dim Pc
Range("k45") = Range("L37")
If Range("L37") < Range("L36") / 100 Then '*** à régler ****
MsgBox ("Acompte trop petit")
Exit Sub
End If
If Range("L36") < 1000 Then Pc = 0.05
If Range("L36") > 1000 Then Pc = 0.5
If Range("L36") > 10000 Then Pc = 5
If Range("L36") > 100000 Then Pc = 10
Do While Range("q36").Value = "Oui" Or Range("q37").Value = "Oui" Or Range("q38").Value = "Oui"
Range("k45") = Range("k45") - Pc
Loop
End SubClaude.
Claude,
Je sens que tu t’approches d’une solution géniale. Ta dernière macro trouve des solutions à des combinaisons que ta macro 2 ne trouvait pas.
Il y a par contre encore des combinaisons (que je découvre pas hasard lors de mes essais) auxquelles ta macro 3 ne trouve toujours pas de solution alors que par la formule de Thibo ou par tâtonnement, on en trouve (voir le dernier exemple ci-joint ou avec la nouvelle combinaison 5 sur ma feuille "Combinaisons").
https://www.excel-pratique.com/~files/doc/Plan_de_remboursement_Yvouille_14.zip
Si tu penses que ta macro peut encore être perfectionnée, j’en serais très heureux.
Il y a encore deux autres problèmes pour lesquels je me permets de demander ton aide :
1) Est-ce possible que ta macro se déclenche automatiquement à chaque fois que l’on modifie l’une des données placées de L36 à L40 ?
2) Si ta macro ne trouve pas de solution, elle cherche et cherche encore une solution et l’utilisateur ne reçoit pas l’information en M37 qu’il doit proposer un nouvel acompte. De plus, il ne sait pas comment stopper le déroulement (sans fin ?) de cette macro (et ça me génerait passablement de devoir introduire des informations afin de stopper cette macro). N'y aurait-il pas la possibilité que ton code recherche une solution jusqu'à un certain point puis qu'il s'arrête de lui-même après un certain nombre d'essais ?
Une dernière info : Je n’arrive pas à ouvrir le fichier modèle que tu proposes.
Encore une fois merci pour ton aide.
Bonne soirée.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir à tous,
Je n’arrive pas à ouvrir le fichier modèle que tu proposes.
C'est dans Excel !
Fichier/nouveau, tu as là les modèles dont un qui répond à ta
demande. "AmortissementPrêt"
Bon ! moi je passe à autre chose ! !
Amicalement
Claude.