XL 2010 ‏comment kilométrage la consommation‏

hema300

XLDnaute Nouveau
Bonne soirée à vous tous Je m'excuse de ne pas avoir montré ce que je voulais plus tôt Pouvez-vous m'aider dans cette affaire

Aux États-Unis, au Canada, au Royaume-Uni et dans de nombreux autres endroits, les gens mesurent la consommation de carburant d'un véhicule en miles par gallon. Comme on peut s'y attendre, les pays qui utilisent le système métrique peuvent mesurer la consommation de carburant en kilomètres par litre, mais beaucoup mesurent également la consommation de carburant d'un véhicule en litres par 100 kilomètres. Pour rendre les choses encore plus confuses, le Royaume-Uni, le Canada et d'autres pays utilisent le gallon impérial, qui est différent du gallon américain, vous ne pouvez donc pas facilement comparer les valeurs en miles par gallon entre différents pays.

Cet exemple calcule le rendement énergétique des trois systèmes : miles américains par gallon, miles britanniques par gallon et litres aux 100 km. Le programme utilise le code suivant pour effectuer ses calculs.
.
Le logiciel obtient ensuite les informations de l'utilisateur et les convertit en miles et gallons américains. Une astuce utile pour travailler avec plusieurs unités consiste à convertir d’abord l’entrée en une unité connue. Dans cet exemple, j'ai choisi les miles et les gallons américains, mais vous pouvez utiliser n'importe quelle unité de votre choix.

Le code calcule ensuite les miles par gallon et les gallons américains par 100 miles et affiche le résultat. Ensuite, le code convertit simplement cette valeur en d'autres unités de mesure et affiche les résultats.

VB:
' Conversion factors.
Private Const miles_per_km As Single = 0.621371192
Private Const us_gallons_per_liter As Single = _
    0.264172052637296
Private Const uk_gallons_per_liter As Single = 0.2199692483

' Calculate the mileage statistics.
Private Sub cmdCalculate_Click()
Dim miles As Single
Dim gallons As Single
Dim us_mpg As Single
Dim us_gal_per_100_miles As Single
Dim uk_gals As Single
Dim uk_mpg As Single
Dim uk_gal_per_100_miles
Dim liters As Single
Dim kilometers As Single
Dim km_per_liter As Single
Dim l_per_100_km As Single

    ' Get the inputs.
    miles = Val(txtDistance.Text)
    gallons = Val(txtFuel.Text)

    ' Convert to miles and US gallons.
    If (optKilometers.Value) Then miles = miles * _
        miles_per_km
    If (optUkGallons.Value) Then
        gallons = gallons * us_gallons_per_liter / _
            uk_gallons_per_liter
    ElseIf (optKilometers.Value) Then
        gallons = gallons * us_gallons_per_liter
    End If

    ' Calculate performance values.
    us_mpg = miles / gallons
    us_gal_per_100_miles = 100 / us_mpg

    ' US values.
    txtUsMpg.Text = Format$(us_mpg, "0.00")
    txtUsGalPer100Miles.Text = Format$(us_gal_per_100_miles, _
        "0.00")

    ' UK values.
    uk_gals = gallons * uk_gallons_per_liter / _
        us_gallons_per_liter
    uk_mpg = miles / uk_gals
    uk_gal_per_100_miles = 100 / uk_mpg
    txtUkMpg.Text = Format$(uk_mpg, "0.00")
    txtUkGalPer100Miles.Text = Format$(uk_gal_per_100_miles, _
        "0.00")

    ' Metric values.
    liters = gallons / us_gallons_per_liter
    kilometers = miles / miles_per_km
    km_per_liter = kilometers / liters
    l_per_100_km = 100 / km_per_liter
    txtKpl.Text = Format$(km_per_liter, "0.00")
    txtLitersPer100km.Text = Format$(l_per_100_km, "0.00")
End Sub
 
Dernière modification par un modérateur:
Solution
Bonjour Hema,
Dans votre fichier toutes les constantes déclarées sont en commentaires :
1692967058263.png

En supprimant ces commentaires on obtient le résultat suivant :
1692966827155.png

Par contre les calculs sont faux. Je vous laisse faire.
Au moins cela ne plante plus, il suffit de modifier les formules. Vous ne semblez pas tenir compte des unités choisies par l'utilisateur.

hema300

XLDnaute Nouveau
Aux États-Unis, au Canada, au Royaume-Uni et dans de nombreux autres endroits, les gens mesurent la consommation de carburant d'un véhicule en miles par gallon. Comme on peut s'y attendre, les pays qui utilisent le système métrique peuvent mesurer la consommation de carburant en kilomètres par litre, mais beaucoup mesurent également la consommation de carburant d'un véhicule en litres par 100 kilomètres. Pour rendre les choses encore plus confuses, le Royaume-Uni, le Canada et d'autres pays utilisent le gallon impérial, qui est différent du gallon américain, vous ne pouvez donc pas facilement comparer les valeurs en miles par gallon entre différents pays.

Cet exemple calcule le rendement énergétique des trois systèmes : miles américains par gallon, miles britanniques par gallon et litres aux 100 km. Le programme utilise le code suivant pour effectuer ses calculs.
.
Le logiciel obtient ensuite les informations de l'utilisateur et les convertit en miles et gallons américains. Une astuce utile pour travailler avec plusieurs unités consiste à convertir d’abord l’entrée en une unité connue. Dans cet exemple, j'ai choisi les miles et les gallons américains, mais vous pouvez utiliser n'importe quelle unité de votre choix.

Le code calcule ensuite les miles par gallon et les gallons américains par 100 miles et affiche le résultat. Ensuite, le code convertit simplement cette valeur en d'autres unités de mesure et affiche les résultats.

' Conversion factors.
Private Const miles_per_km As Single = 0.621371192
Private Const us_gallons_per_liter As Single = _
0.264172052637296
Private Const uk_gallons_per_liter As Single = 0.2199692483

' Calculate the mileage statistics.
Private Sub cmdCalculate_Click()
Dim miles As Single
Dim gallons As Single
Dim us_mpg As Single
Dim us_gal_per_100_miles As Single
Dim uk_gals As Single
Dim uk_mpg As Single
Dim uk_gal_per_100_miles
Dim liters As Single
Dim kilometers As Single
Dim km_per_liter As Single
Dim l_per_100_km As Single

' Get the inputs.
miles = Val(txtDistance.Text)
gallons = Val(txtFuel.Text)

' Convert to miles and US gallons.
If (optKilometers.Value) Then miles = miles * _
miles_per_km
If (optUkGallons.Value) Then
gallons = gallons * us_gallons_per_liter / _
uk_gallons_per_liter
ElseIf (optKilometers.Value) Then
gallons = gallons * us_gallons_per_liter
End If

' Calculate performance values.
us_mpg = miles / gallons
us_gal_per_100_miles = 100 / us_mpg

' US values.
txtUsMpg.Text = Format$(us_mpg, "0.00")
txtUsGalPer100Miles.Text = Format$(us_gal_per_100_miles, _
"0.00")

' UK values.
uk_gals = gallons * uk_gallons_per_liter / _
us_gallons_per_liter
uk_mpg = miles / uk_gals
uk_gal_per_100_miles = 100 / uk_mpg
txtUkMpg.Text = Format$(uk_mpg, "0.00")
txtUkGalPer100Miles.Text = Format$(uk_gal_per_100_miles, _
"0.00")

' Metric values.
liters = gallons / us_gallons_per_liter
kilometers = miles / miles_per_km
km_per_liter = kilometers / liters
l_per_100_km = 100 / km_per_liter
txtKpl.Text = Format$(km_per_liter, "0.00")
txtLitersPer100km.Text = Format$(l_per_100_km, "0.00")
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hema,
Dans votre fichier toutes les constantes déclarées sont en commentaires :
1692967058263.png

En supprimant ces commentaires on obtient le résultat suivant :
1692966827155.png

Par contre les calculs sont faux. Je vous laisse faire.
Au moins cela ne plante plus, il suffit de modifier les formules. Vous ne semblez pas tenir compte des unités choisies par l'utilisateur.
 

Pièces jointes

  • howto_mileage_consumption V2.xlsm
    17.8 KB · Affichages: 2

hema300

XLDnaute Nouveau
Bonjour Hema,
Dans votre fichier toutes les constantes déclarées sont en commentaires :
Regarde la pièce jointe 1177181
En supprimant ces commentaires on obtient le résultat suivant :
Regarde la pièce jointe 1177179
Par contre les calculs sont faux. Je vous laisse faire.
Au moins cela ne plante plus, il suffit de modifier les formules. Vous ne semblez pas tenir compte des unités choisies par l'utilisateur.
Merci Sylvanu c'est ce qui est demandé
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je ne vois pas comment vous pouviez savoir que vos formules étaient erronées alors que toutes vos constantes étaient en commentaires et que le VBA ne pouvait pas tourner.
Donc vous saviez que votre fichier était faux et qu'il ne pouvait pas marcher. Alors pourquoi le livrer.
A quoi jouez vous ?
 

bsalv

XLDnaute Occasionnel
il y a quelque chose avec les labels de l'userform et le texte à côté ?? Donc, il faut commencer avec cela ...
un essai
Code:
Private Sub cmdCalculate_Click()

     Dim Mile2Km, Gal2Lit, UKGal2Lit, Km, Lit

     Mile2Km = WorksheetFunction.Convert(1, "mi", "m") / 1000
     Gal2Lit = WorksheetFunction.Convert(1, "gal", "l")
     UKGal2Lit = WorksheetFunction.Convert(1, "uk_gal", "l")

     'ISO-distance
     Km = Val(txtDistance.Text)              'votre distance
     If miles1.Value Then Km = Km * Mile2Km     'si c'était en "miles", maintenant km

     'ISO_volume
     Lit = Val(txtFuel.Text)
     If optUkGallons.Value Then Lit = Lit * UKGal2Lit
     If us_gallons_per_liter1 Then Lit = Lit * Gal2Lit

     'european values
     txtKpl.Text = Round(Lit / Km * 100, 2)
     txtLitersPer100km.Text = Round(Km / Lit, 2)

     'British values
     txtUkMpg = Round(Lit * Mile2Km / (UKGal2Lit * Km) * 100, 2)
     txtUkGalPer100Miles = Round((UKGal2Lit * Km) / (Lit * Mile2Km * 100), 2)
     ' Get the inputs.

     'US, pas encore fait
     txtUsMpg.Text = "x"
     txtUsGalPer100Miles.Text = "x"
    
End Sub
 

Pièces jointes

  • howto_mileage_consumption.xlsm
    27.4 KB · Affichages: 7

Statistiques des forums

Discussions
312 207
Messages
2 086 233
Membres
103 161
dernier inscrit
Rogombe bryan