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.

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 Sub

3- 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 Sub

Bonne 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.

Rechercher des sujets similaires à "formule code vba"