Microsoft 365 Choix calculs excel

dmgt

XLDnaute Nouveau
Bonjour,
Est il possible et relativement facile de créer une formule permettant de choisir de quelle manière générer un calcul dans un tableau?
Je m'explique, dans un tableau je voudrais pouvoir calculer, au choix, soit le prix d'un appartement en faisant prix/m² X surface ce qui me donnerait le prix total de l'appartement ou pouvoir switcher sur un calcul prix global / m² ce qui me donnerait le prix au m².
En esperant avoir été relativement clair :)
Merci
 

dmgt

XLDnaute Nouveau
Bonjour JHA,
merci pour ton retour.
Le but n'est pas forcement d'avoir le plus bas prix mais plutôt de pouvoir definir un prix soit en choisissant le prix total ce qui me donnerait un prix au m² soit en définissant un prix au m² ce qui me donnerait le prix total.
Par exemple un appartement de 103,32 m² je lui donne une valeur de 3850 €/m² ca me calcule un prix global de 397 782 €uros.
Je souhaite arrondir ce prix à 400 000 € ou 395 000 €, je voudrais pouvoir créer un bouton qui modifie la formule et me permette de rentrer le prix dans ma case prix et que cela me calcul le nouveau prix / m²

1er calcul 103.32 X 3 850 = 397 782 €
2éme calcul 400 000 / 103.32 = 3 871.46 €/m²

Et tout ca, idealement dans la meme ligne du meme tableau
 

dmgt

XLDnaute Nouveau
En fait je parle de formule mais c'est par méconnaissance d'Excel, je cherche surtout une solution plus qu'une formule.
Je ne maitrise pas du tout la macro et n'arrive a faire que des formules en suivant différents tuto ...
Je ne veux pas que les deux options soient affichées, juste quand je rentre un prix au m² et que ca me donne le resultat final je puisse modifier ce resultat final (principalement pour l'arrondir) et que ca me modifie, cette fois, le prix au m² (que j'avais initialement rentré manuellement
Voici une partie du tableau que j'ai fait
 

Pièces jointes

  • essais formules.xlsx
    52.4 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Le code dans Feuil1 (Vente appart) pourrait ressembler à ça :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim LOt As ListObject, L&, C%, CSurfac%, CelSurfac As Range, CPrixUn%, CelPrixUn As Range, _
      CPrixAp%, CelPrixAp As Range
   If Target.CountLarge > 1 Then Exit Sub
   Set LOt = Me.ListObjects(1)
   L = Target.Row - LOt.Range.Row: C = Target.Column - LOt.Range.Column + 1
   If L < 1 Or L > LOt.ListRows.Count + 1 Then Exit Sub
   CSurfac = LOt.ListColumns("SHAB").Index
   Set CelSurfac = LOt.DataBodyRange(L, CSurfac)
   CPrixUn = LOt.ListColumns("PRIX m²  T.T.C").Index
   Set CelPrixUn = LOt.DataBodyRange(L, CPrixUn)
   CPrixAp = LOt.ListColumns("PRIX DE VENTE T.T.C " & vbLf & "(hors pkg)").Index
   Set CelPrixAp = LOt.DataBodyRange(L, CPrixAp)
   Application.EnableEvents = False
   If C <> CPrixAp Then
      CelPrixAp.Value = CCur(CelPrixUn.Value * CelSurfac.Value)
   ElseIf CelSurfac.Value <> 0 Then
      CelPrixUn.Value = CCur(CelPrixAp.Value / CelSurfac.Value)
   Else
      If CelPrixUn.Value = 0 Then CelPrixUn.Value = CCur(WorksheetFunction _
         .Average(LOt.ListRows(CPrixUn).DataBodyRange.Value))
      CelSurfac.Value = CDbl(CelPrixAp.Value / CelPrixUn.Value)
      End If
   Application.EnableEvents = True
   End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non, c'est une prise en charge d'énènement d'objet Worksheet. Donc clic droit sur l'onglet "Vente appart" et commande "Visualiser le code", ou bien dans l'explorateur de projet VBE cliquez deux fois sur "Feuil (Vente appart)" de la rubrique "Microsoft Excel Objets" et collez le code dans la fenêtre de code.
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet