• Initiateur de la discussion Initiateur de la discussion Cam_corbav
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Cam_corbav

Guest
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
 
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
 
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)
 
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+
 
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!
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
212
Réponses
18
Affichages
349
Réponses
4
Affichages
270
Réponses
12
Affichages
322
  • Question Question
Réponses
12
Affichages
465
Retour