Calcul d un prix en fonction du poids-programmation VBA

lgvba

XLDnaute Nouveau
Salu a tous


Je suis en train de programmer un formulaire afiin de calculer le prix d' un colis selon le poid entrer dans ma texte box .
Mais j ' ai un probleme afin d ' inserer des conditions pour le calcul de ce prix


Ma contrainte est que des lors que le poids est supérieur a 20 kg, le prix facturé par 0.5kg additionnel du colis varie entre 1.78-1.79euros

exemple - Entre poids 20 -30 kg , le prix par 0.5 kg coute 1.78.(voir grille tarifaire-fichier)

Tout en sachant qu' il y a un prix de base exacte pour colis de 30, 70 et 250 kg(voir grille tarifaire).

je voudrais votre aide afin de prendre ces criteres en compte lors du calcul du prix avec la programmation VBA.


Veuillez trouver ci joint le fichier Excel

Merci pour votre aide

cdt

Lgvba
 

Pièces jointes

  • Calculpoids2.xls
    46.5 KB · Affichages: 115
  • Calculpoids2.xls
    46.5 KB · Affichages: 126
  • Calculpoids2.xls
    46.5 KB · Affichages: 120

Dranreb

XLDnaute Barbatruc
Re : Calcul d un prix en fonction du poids-programmation VBA

Bonjour.
Au delà de 4,5 kg, vos prix sont très largement rendus par l'expression: Round(13.86065406 + Poids * 3.5519466, 2)
Voyez s'il n'y a pas lieu de le généraliser pour tous les poids au dessus de 4,5 kg, parce que ça marche encore avec 70 kg !
Une majoration microscopique serait à appliquer pour être fidèle au tarif 250 kg, mais sa nécessité me paraît suspecte, tant cette formule s'applique bien partout ailleurs.
Cordialement.
 

camarchepas

XLDnaute Barbatruc
Re : Calcul d un prix en fonction du poids-programmation VBA

Bonjour,

J'ai pas vérifié à la virgule prés, mais le principe pourrait -être le suivant

Code:
Private Sub CommandButton1_Click()
Dim vrech As Range
Dim Masse As Double, Surtaxe As Double
Dim Tourne As Double, Prix As Double, Différence As Double
'
'Mémorise la masse du produit
 Masse = CDbl(Replace(Me.TextBox1.Value, ".", ","))
'
  'Trouve le plus proche poids inférieur
   Do
    For Tourne = 250 To 0 Step -0.5
    If Tourne < Masse Then

     'Recherche dans la colonne Poids la valeur de la masse
     Set vrech = Sheets("Shippingprice").Columns("A:A").Find(Tourne, lookat:=xlWhole, searchdirection:=xlPrevious)
      If Not vrech Is Nothing Then
       Prix = vrech.Offset(0, 1).Value
       'Surtaxe
       Différence = Masse - Tourne
       Surtaxe = Différence / 0.5 * vrech.Offset(2, 1).Value
       Exit For
      End If
    End If
   Next Tourne

 Loop Until Prix <> 0 Or Tourne = -0.5
If Tourne = -0.5 And Prix = 0 Then MsgBox "Erreur"

Me.TextBox2.Value = Prix + Surtaxe
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35