Microsoft 365 Écrire une Formule de calcul avec macro

pat66

XLDnaute Impliqué
Bonsoir Le forum,

J'ai besoin de votre aide, dans l'exemple ci joint la formule "=NPM(I9/12;E12;0;G12*-1;0)/12" est utilisée dans la cellule I12 pour réaliser un calcul, mais j'aimerai savoir si il est possible de réaliser ce calcul avec une macro car je souhaite pouvoir saisir aussi dans la cellule I12 et que cela modifie E12 en utilisant les mêmes paramètres mais la formule "=VPM(I9/12;I12*12;0;G12;0)*-1"

un grand merci j'espère être clair

bonne soirée
 

Pièces jointes

  • Classeur1.xlsm
    11.8 KB · Affichages: 12
Dernière édition:
Solution
Voila, j'ai fait au plus simple,

voici les deux codes utilisés en fonction de ce que tu veux recalculer

VB:
With Sheets(1)
    Range("I12").FormulaR1C1 = "=NPER(R[-3]C/12,RC[-4],0,RC[-2]*-1,0)/12"
    Range("I12").Copy
    Range("I12").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

With Sheets(1)
    Range("E12").FormulaR1C1 = "=PMT(R[-3]C[4]/12,RC[4]*12,0,RC[2],0)*-1"
    Range("E12").Copy
    Range("E12").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

don_pets

XLDnaute Occasionnel
Voila, j'ai fait au plus simple,

voici les deux codes utilisés en fonction de ce que tu veux recalculer

VB:
With Sheets(1)
    Range("I12").FormulaR1C1 = "=NPER(R[-3]C/12,RC[-4],0,RC[-2]*-1,0)/12"
    Range("I12").Copy
    Range("I12").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

With Sheets(1)
    Range("E12").FormulaR1C1 = "=PMT(R[-3]C[4]/12,RC[4]*12,0,RC[2],0)*-1"
    Range("E12").Copy
    Range("E12").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
 

Pièces jointes

  • Classeur1 (1).xlsm
    22.5 KB · Affichages: 8

pat66

XLDnaute Impliqué
bonjour,

très intéressante ta soluce, merci beaucoup, mais avant de l'utiliser, pourrais tu me confirmer si c'est possible d'éviter les CommandButton et d'utiliser plutôt Selection_change ou Worksheet_Change(ByVal Target As Range), en tous cas c'est déjà super sympa !

merci beaucoup
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je dirais, dans le module Feuil1 (Feuil1) :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Select Case Target.Address
      Case "$E$12": Target.Value = Target.Value: Me.[I12].FormulaR1C1 = "=NPER(R9C/12,RC5,0,-RC7,0)/12"
      Case "$I$12": Target.Value = Target.Value: Me.[E12].FormulaR1C1 = "=-PMT(R9C9/12,R12C9*12,0,R12C7,0)"
      End Select
   End Sub
 

pat66

XLDnaute Impliqué
Bonjour le forum,

un grand merci à tous pour votre aide !
Après réflexion et quelques tests en situation, j'opte finalement pour la soluce de Don Pets avec les boutons car cette soluce me permet de réinitialiser (vider) les cellules concernées et de les remplir dans n'importe quel ordre

j'ai simplement adapté les formules R1C1 en FormulaLocal , c'est beaucoup plus simple pour moi :
-----
Range("I12").FormulaLocal = "=NPM(I9/12;E12;0;G12*-1;0)/12"
-----
Range("E12").FormulaLocal = "=VPM(I9/12;I12*12;0;G12*-1;0)"
------

encore merci à tous
 

pat66

XLDnaute Impliqué
Bonjour,

oui je sais, mais j'ai passé hier plus de 3 h à essayer de comprendre le principe de FormulaR1C1, hélas j'ai du abandonné car j'ai du mal à comprendre comment modifier les cellules à prendre en compte et très franchement je ne pense pas qu'office supprime la version française bientôt
 

Phil69970

XLDnaute Barbatruc
Re

J'avais cru comprendre que tu voulais que cela soit automatique car tu as écris cela dans ton fichier

1691651563858.png


D’où ma solution sans bouton ;)
 

pat66

XLDnaute Impliqué
Re

J'avais cru comprendre que tu voulais que cela soit automatique car tu as écris cela dans ton fichier

Regarde la pièce jointe 1176262

D’où ma solution sans bouton ;)
Bonjour Phil69970,
effectivement mais lorsque j'ai voulu vider les cellules des erreurs sont apparues alors je me suis rabattu sur la solution de don_pets, mais je vais voir à l'utilisation mon choix n'est pas définitif...

merci
 

Discussions similaires

Réponses
4
Affichages
382

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin