formule vba

Cam_corbav

XLDnaute Nouveau
Bonsoir à tous,
Je me permets de poster ce message car je n'arrive pas à faire ma formule SI en vba.
En effet j'aurai besoin de votre aide pour remplacer ma formule si classique pour le calcul du bénéfice ou de la perte de mon compte de résultat, par une fonction personnalisée par un algo en vba.
Merci d'avance
2019-03-29.png
 

CHALET53

XLDnaute Barbatruc
Bonjour,
En vba, pour remplir les cellules B11 et / ou D11

Sub essai()
Range("B11") = "": Range("D11") = ""
If Range("D10") >= Range("B10") Then Range("B11") = Range("D10") - Range("B10") Else Range("D11") = Range("B10") - Range("D10")

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour

Histoire de varier les plaisirs ;)
Une autre syntaxe possible
Code:
Sub essai_II()
[B11,D11] = "": [B11] = IIf([D10] >= [B10], [D10] - [B10], [B10] - [D10])
End Sub

La même transformée en fonction personnalisée
Code:
Function benefice(Cha As Range, Pro As Range)
benefice = IIf(Pro >= Cha, Pro - Cha, Cha - Pro)
End Function
A utiliser comme suit: saisir en B11
=benefice(B10;D10)
 

job75

XLDnaute Barbatruc
Bonjour Cam_corbav, salut CHALET53, JM, heureux de vous revoir, vous vous faites rares:)
Question subsidiaire
Pourquoi ne pas simplement utiliser la formule classique saisie manuellement en B11?
Je ne comprends pas non plus, les formules Excel sont en effet très simples :

- en B11 =SI(D10>B10;D10-B10;"")

- en D11 =SI(D10<B10;B10-D10;"")

- en B12 et D12 utiliser la fonction SOMME pour additionner les 2 cellules du dessus.

A+
 

Cam_corbav

XLDnaute Nouveau
Bonjour Cam_corbav, salut CHALET53, JM, heureux de vous revoir, vous vous faites rares:)

Je ne comprends pas non plus, les formules Excel sont en effet très simples :

- en B11 =SI(D10>B10;D10-B10;"")

- en D11 =SI(D10<B10;B10-D10;"")

- en B12 et D12 utiliser la fonction SOMME pour additionner les 2 cellules du dessus.

A+
Les formules sont très simple, je suis d'accord, or j'ai besoin d'utiliser vba pour présenter mon exercice et je suis vraiment perdue, je n'arrive pas du tout à m'en sortir pour celui-ci!
 

job75

XLDnaute Barbatruc
Si c'est un pur exercice d'école ça se comprend.

Alors placez cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c1 As Range, c2 As Range, c3 As Range, c4 As Range, x#, y#
Set c1 = Cells.Find("Total charges", , xlValues)
If c1 Is Nothing Then MsgBox "'Total charges' introuvable...": Exit Sub
Set c2 = Cells.Find("Total produits")
If c2 Is Nothing Then MsgBox "'Total produits' introuvable...": Exit Sub
Set c3 = Cells.Find("Bénéfice")
If c3 Is Nothing Then MsgBox "'Bénéfice' introuvable...": Exit Sub
Set c4 = Cells.Find("Perte")
If c4 Is Nothing Then MsgBox "'Perte' introuvable...": Exit Sub
x = Val(Replace(c1(1, 2), ",", "."))
y = Val(Replace(c2(1, 2), ",", "."))
Application.EnableEvents = False
c3(1, 2) = IIf(x < y, y - x, "")
c4(1, 2) = IIf(x > y, x - y, "")
Application.EnableEvents = True
End Sub
Elle se déclenche chaque fois qu'on valide ou modifie une cellule quelconque.

A+
 

Cam_corbav

XLDnaute Nouveau
Si c'est un pur exercice d'école ça se comprend.

Alors placez cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c1 As Range, c2 As Range, c3 As Range, c4 As Range, x#, y#
Set c1 = Cells.Find("Total charges", , xlValues)
If c1 Is Nothing Then MsgBox "'Total charges' introuvable...": Exit Sub
Set c2 = Cells.Find("Total produits")
If c2 Is Nothing Then MsgBox "'Total produits' introuvable...": Exit Sub
Set c3 = Cells.Find("Bénéfice")
If c3 Is Nothing Then MsgBox "'Bénéfice' introuvable...": Exit Sub
Set c4 = Cells.Find("Perte")
If c4 Is Nothing Then MsgBox "'Perte' introuvable...": Exit Sub
x = Val(Replace(c1(1, 2), ",", "."))
y = Val(Replace(c2(1, 2), ",", "."))
Application.EnableEvents = False
c3(1, 2) = IIf(x < y, y - x, "")
c4(1, 2) = IIf(x > y, x - y, "")
Application.EnableEvents = True
End Sub
Elle se déclenche chaque fois qu'on valide ou modifie une cellule quelconque.

A+
Je vous remercie mais il n'y a rien à faire, cela ne veut pas marcher
 

Discussions similaires

Réponses
2
Affichages
835
Réponses
0
Affichages
131
Réponses
2
Affichages
132

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla