Formule ? ou Code VBA ?
Bonsoir Claude, Bonsoir le Forum,
Claude, apparemment tu jettes l’éponge et, comme mon problème n’est semble-t-il pas simple, je te comprends très bien. Merci infiniment d’avoir été si loin dans la recherche d’une solution.
Ainsi que tu me le conseilles, j’ai été voir les modèles d’Excel. Comme je le pensais, aucun de ces modèles ne correspond à mon fichier puisqu’aucun ne permet, par exemple, de ne compter des intérêts qu’à partir d’une date différée mais de commencer à en encaisser des acomptes immédiatement. Ceci est cependant impératif dans mon cas.
Toutefois, pour toutes les combinaisons trouvées jusqu’à maintenant qui posent problème – ainsi que pour toutes celles qui n'en posent pas - l’une ou l’autre des formules que Thibo a proposées trouvent une solution. N’y aurait-il donc vraiment pas la possibilité d’inscrire au préalable en K45 la formule arrondie au franc =ARRONDI.SUP(L37-H17/(Q40-1);0) et que l’un d’entre vous me fournisse un code VBA qui traduirait ceci : « Après chaque changement dans l’une des cellules L36, L37, L38, L39 ou L40, si Q36, Q37 ou Q38 ne sont pas égal à « Non » ; alors remplacer la formule en K45 par la formule =ARRONDI.SUP((L37-H17/(Q40-1))*2;1)/2 ; sinon laisser la formule qui est en place ».
Ceci permettrait que la solution à énormément de combinaisons en L37:L40 qui en ont une possible soit trouvée – si ce n’est à toutes - et que, sinon, l’utilisateur soit averti de proposer un autre acompte en L37, selon le message qui apparaît automatiquement en M37.
https://www.excel-pratique.com/~files/doc/Plan_de_remboursement_Yvouille_15.zip
Merci d’avance à tous ceux qui continuent à se pencher sur ce problème.
Cordialement.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir,
Solution panachée (formules "thibo" et macro
J'ai testé les 6 combinaisons + beaucoup d'autres, la 6ème est + longue à traiter car il
faut pousser jusqu'au 1/1000.
Mise en oeuvre :
1- Formule à mettre en Q34
=SI(ET(Q36="Non";Q37="Non";Q38="Non");"OK";"")
2- Private Sub dans VBE feuille Berechnoug (remplace le bouton)
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Application.Intersect(Target, Range("L36:L40")) Is Nothing Then
Call BonAcompte
End If
End Sub3- macro dans un module
Sub BonAcompte()
'par Claude Dubois pour "yvouille" le 09/03/09
Range("k45") = Range("L37")
Application.EnableEvents = False
'*********** formules thibo ********
Range("k45").Formula = "=ROUNDUP(L37-h17/(q40-1),0)"
Range("k45") = Range("k45").Value
If Range("q34") <> "OK" Then
Range("k45").Formula = "=ROUNDUP((L37-h17/(q40-1))*2,1)/2"
Range("k45") = Range("k45").Value
End If
If Range("q34") = "OK" Then
Application.EnableEvents = True
Exit Sub
End If
'*********** tatonne ********
Range("k45") = Range("L37")
Do While Range("q39") < -100
Range("k45") = Range("k45") - 1
Loop
Do While Range("q34") <> "OK"
Range("k45") = Range("k45") - 0.001
Loop
Range("k42").Formula = "=ROUNDUP((k45 - 0.001),3)"
Range("k45") = Range("k42")
Range("k42").ClearContents
Application.EnableEvents = True
End SubBonne soirée
Claude.
Super génial Claude ! Ton code fonctionne exactement comme je l’espérais.
Merci infiniment de t’être penché à nouveau sur mon problème.
J’ai juste dû supprimer la partie ***tatonne*** car, comme je l’avais indiqué, un arrondi en dessous de 5 ct. n’est pas utilisable en Suisse.
Pour tous ceux qui désirent voir comment fonctionne ce travail commun de Thibo et Claude (et puis aussi un peu de moi) :
https://www.excel-pratique.com/~files/doc/Plan_de_remboursement_yvouille_16.zip
Peut-être juste une précision : Si j’ai tellement insisté afin d’avoir une solution par une nouvelle macro à un certain moment, c’est parce que je ne m’étais pas encore rendu compte que l’une ou l’autre des formules de Thibo couvraient – je pense - toutes les combinaisons qui ont une solution utilisable. J’avais par contre déjà insinué à ce moment qu’une combinaison de deux formules pourrait être une solution.
Encore merci à Claude, à Thibo et à tous les autres qui ont éventuellement aussi cherché.
Bonne soirée.