Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

calcul VBA faussé par un arrondi mais juste par une formule

4 réponses
Avatar
fetnat
Bonjour,

J'ai un calcul faussé par un arrondi.
Dans l'exemple ci-dessous, le bon résultat est en F6 mais il est créé
par une formule.

Le résultat en F3 est arrondi et vient d'une variable et d'un calcul VBA.

Si j'ai D3 = 05:30 le résultat est juste en VBA.
Si j'ai D3 = 05:32 le résultat est arrondi en VBA.

La col F est au format comptabilité mais c'est pareil avec d'autres formats.

Si quelqu'un pouvait lancer cette macro et me trouver la cause de la
différence, je vous remercie d'avance.

Fetnat


Sub tarif()
'somme des temps B3+C3+D3 fois le tarif1

Dim coldebsource As Integer, n As Integer, onglet As Integer
Dim trio As Date, honoraireclimois As Long
Dim plg As Range

Const tarif1 = 100

n = 3
coldebsource = 2
onglet = 1
honoraireclimois = 0
trio = 0

ThisWorkbook.Worksheets(onglet).Range("B3") = "01:30:00"
ThisWorkbook.Worksheets(onglet).Range("C3") = "00:30:00"
ThisWorkbook.Worksheets(onglet).Range("D3") = "05:32:00"

Set plg = Range(Cells(n, coldebsource), Cells(n, coldebsource + 2))
trio = Application.Sum(plg)
honoraireclimois = trio * 24 * tarif1
ThisWorkbook.Worksheets(onglet).Range("F3") = honoraireclimois
Sheets(onglet).Columns("F:F").NumberFormat = "_($* #,##0.00_);_($*
(#,##0.00);_($* ""-""??_);_(@_)"
ThisWorkbook.Worksheets(onglet).Range("E6") = trio

Worksheets(onglet).Range("E6").NumberFormat = "[h]:mm"
Worksheets(onglet).Range("F6") = "=E6*24*100"
End Sub

4 réponses

Avatar
fetnat
Bonjour,

La macro tarif() est un exemple extrait de ma boucle finale, vous pouvez
la lancer pour voir la différence de calcul.
J'ai modifié la var honoraireclimois en Long selon votre conseil.
J'ai fais plusieurs essais avec la const tarif. Meme en long, j'ai une
différence.
Avec 5:30 les calculs sont identiques mais si je place 5:32 un arrondi,
que je ne souhaite pas, se produit.
Ce code met des temps dans B3 C3 et D3 et fait la somme des temps.
Puis multiplication du temps x tarif dans une var trio.
Merci pour votre aide

Fetnat

Bonjour.
Tu devrais donner plus de détail sur ton code. Toutefois si ce problème est
lié à ton précédent post, ta variable doit être définie comme "Long" et non
comme "Integer".
Cordialement.
Daniel
"fetnat" a écrit dans le message de news:


Bonjour,

J'ai un calcul faussé par un arrondi.
Dans l'exemple ci-dessous, le bon résultat est en F6 mais il est créé par
une formule.

Le résultat en F3 est arrondi et vient d'une variable et d'un calcul VBA.

Si j'ai D3 = 05:30 le résultat est juste en VBA.
Si j'ai D3 = 05:32 le résultat est arrondi en VBA.

La col F est au format comptabilité mais c'est pareil avec d'autres
formats.

Si quelqu'un pouvait lancer cette macro et me trouver la cause de la
différence, je vous remercie d'avance.

Fetnat


Sub tarif()
'somme des temps B3+C3+D3 fois le tarif1

Dim coldebsource As Integer, n As Integer, onglet As Integer
Dim trio As Date, honoraireclimois As Long
Dim plg As Range

Const tarif1 = 100

n = 3
coldebsource = 2
onglet = 1
honoraireclimois = 0
trio = 0

ThisWorkbook.Worksheets(onglet).Range("B3") = "01:30:00"
ThisWorkbook.Worksheets(onglet).Range("C3") = "00:30:00"
ThisWorkbook.Worksheets(onglet).Range("D3") = "05:32:00"

Set plg = Range(Cells(n, coldebsource), Cells(n, coldebsource + 2))
trio = Application.Sum(plg)
honoraireclimois = trio * 24 * tarif1
ThisWorkbook.Worksheets(onglet).Range("F3") = honoraireclimois
Sheets(onglet).Columns("F:F").NumberFormat = "_($* #,##0.00_);_($*
(#,##0.00);_($* ""-""??_);_(@_)"
ThisWorkbook.Worksheets(onglet).Range("E6") = trio

Worksheets(onglet).Range("E6").NumberFormat = "[h]:mm"
Worksheets(onglet).Range("F6") = "æ*24*100"
End Sub







Avatar
Daniel
Bonjour.
Tu devrais donner plus de détail sur ton code. Toutefois si ce problème est
lié à ton précédent post, ta variable doit être définie comme "Long" et non
comme "Integer".
Cordialement.
Daniel
"fetnat" a écrit dans le message de news:

Bonjour,

J'ai un calcul faussé par un arrondi.
Dans l'exemple ci-dessous, le bon résultat est en F6 mais il est créé par
une formule.

Le résultat en F3 est arrondi et vient d'une variable et d'un calcul VBA.

Si j'ai D3 = 05:30 le résultat est juste en VBA.
Si j'ai D3 = 05:32 le résultat est arrondi en VBA.

La col F est au format comptabilité mais c'est pareil avec d'autres
formats.

Si quelqu'un pouvait lancer cette macro et me trouver la cause de la
différence, je vous remercie d'avance.

Fetnat


Sub tarif()
'somme des temps B3+C3+D3 fois le tarif1

Dim coldebsource As Integer, n As Integer, onglet As Integer
Dim trio As Date, honoraireclimois As Long
Dim plg As Range

Const tarif1 = 100

n = 3
coldebsource = 2
onglet = 1
honoraireclimois = 0
trio = 0

ThisWorkbook.Worksheets(onglet).Range("B3") = "01:30:00"
ThisWorkbook.Worksheets(onglet).Range("C3") = "00:30:00"
ThisWorkbook.Worksheets(onglet).Range("D3") = "05:32:00"

Set plg = Range(Cells(n, coldebsource), Cells(n, coldebsource + 2))
trio = Application.Sum(plg)
honoraireclimois = trio * 24 * tarif1
ThisWorkbook.Worksheets(onglet).Range("F3") = honoraireclimois
Sheets(onglet).Columns("F:F").NumberFormat = "_($* #,##0.00_);_($*
(#,##0.00);_($* ""-""??_);_(@_)"
ThisWorkbook.Worksheets(onglet).Range("E6") = trio

Worksheets(onglet).Range("E6").NumberFormat = "[h]:mm"
Worksheets(onglet).Range("F6") = "æ*24*100"
End Sub


Avatar
fetnat
Bonsoir,

C'est parfait, j'ai les décimales.
Merci pour votre aide.

Fetnat

Honte à moi !
Il faut définir ta variable de type "Single" et non "Long".
10 pater et 15 ave !
Daniel
"fetnat" a écrit dans le message de news:
%

Bonjour,

La macro tarif() est un exemple extrait de ma boucle finale, vous pouvez
la lancer pour voir la différence de calcul.
J'ai modifié la var honoraireclimois en Long selon votre conseil.
J'ai fais plusieurs essais avec la const tarif. Meme en long, j'ai une
différence.
Avec 5:30 les calculs sont identiques mais si je place 5:32 un arrondi,
que je ne souhaite pas, se produit.
Ce code met des temps dans B3 C3 et D3 et fait la somme des temps.
Puis multiplication du temps x tarif dans une var trio.
Merci pour votre aide

Fetnat


Bonjour.
Tu devrais donner plus de détail sur ton code. Toutefois si ce problème
est lié à ton précédent post, ta variable doit être définie comme "Long"
et non comme "Integer".
Cordialement.
Daniel
"fetnat" a écrit dans le message de news:



Bonjour,

J'ai un calcul faussé par un arrondi.
Dans l'exemple ci-dessous, le bon résultat est en F6 mais il est créé par
une formule.

Le résultat en F3 est arrondi et vient d'une variable et d'un calcul VBA.

Si j'ai D3 = 05:30 le résultat est juste en VBA.
Si j'ai D3 = 05:32 le résultat est arrondi en VBA.

La col F est au format comptabilité mais c'est pareil avec d'autres
formats.

Si quelqu'un pouvait lancer cette macro et me trouver la cause de la
différence, je vous remercie d'avance.

Fetnat


Sub tarif()
'somme des temps B3+C3+D3 fois le tarif1

Dim coldebsource As Integer, n As Integer, onglet As Integer
Dim trio As Date, honoraireclimois As Long
Dim plg As Range

Const tarif1 = 100

n = 3
coldebsource = 2
onglet = 1
honoraireclimois = 0
trio = 0

ThisWorkbook.Worksheets(onglet).Range("B3") = "01:30:00"
ThisWorkbook.Worksheets(onglet).Range("C3") = "00:30:00"
ThisWorkbook.Worksheets(onglet).Range("D3") = "05:32:00"

Set plg = Range(Cells(n, coldebsource), Cells(n, coldebsource + 2))
trio = Application.Sum(plg)
honoraireclimois = trio * 24 * tarif1
ThisWorkbook.Worksheets(onglet).Range("F3") = honoraireclimois
Sheets(onglet).Columns("F:F").NumberFormat = "_($* #,##0.00_);_($*
(#,##0.00);_($* ""-""??_);_(@_)"
ThisWorkbook.Worksheets(onglet).Range("E6") = trio

Worksheets(onglet).Range("E6").NumberFormat = "[h]:mm"
Worksheets(onglet).Range("F6") = "æ*24*100"
End Sub











Avatar
Daniel
Honte à moi !
Il faut définir ta variable de type "Single" et non "Long".
10 pater et 15 ave !
Daniel
"fetnat" a écrit dans le message de news:
%
Bonjour,

La macro tarif() est un exemple extrait de ma boucle finale, vous pouvez
la lancer pour voir la différence de calcul.
J'ai modifié la var honoraireclimois en Long selon votre conseil.
J'ai fais plusieurs essais avec la const tarif. Meme en long, j'ai une
différence.
Avec 5:30 les calculs sont identiques mais si je place 5:32 un arrondi,
que je ne souhaite pas, se produit.
Ce code met des temps dans B3 C3 et D3 et fait la somme des temps.
Puis multiplication du temps x tarif dans une var trio.
Merci pour votre aide

Fetnat

Bonjour.
Tu devrais donner plus de détail sur ton code. Toutefois si ce problème
est lié à ton précédent post, ta variable doit être définie comme "Long"
et non comme "Integer".
Cordialement.
Daniel
"fetnat" a écrit dans le message de news:


Bonjour,

J'ai un calcul faussé par un arrondi.
Dans l'exemple ci-dessous, le bon résultat est en F6 mais il est créé par
une formule.

Le résultat en F3 est arrondi et vient d'une variable et d'un calcul VBA.

Si j'ai D3 = 05:30 le résultat est juste en VBA.
Si j'ai D3 = 05:32 le résultat est arrondi en VBA.

La col F est au format comptabilité mais c'est pareil avec d'autres
formats.

Si quelqu'un pouvait lancer cette macro et me trouver la cause de la
différence, je vous remercie d'avance.

Fetnat


Sub tarif()
'somme des temps B3+C3+D3 fois le tarif1

Dim coldebsource As Integer, n As Integer, onglet As Integer
Dim trio As Date, honoraireclimois As Long
Dim plg As Range

Const tarif1 = 100

n = 3
coldebsource = 2
onglet = 1
honoraireclimois = 0
trio = 0

ThisWorkbook.Worksheets(onglet).Range("B3") = "01:30:00"
ThisWorkbook.Worksheets(onglet).Range("C3") = "00:30:00"
ThisWorkbook.Worksheets(onglet).Range("D3") = "05:32:00"

Set plg = Range(Cells(n, coldebsource), Cells(n, coldebsource + 2))
trio = Application.Sum(plg)
honoraireclimois = trio * 24 * tarif1
ThisWorkbook.Worksheets(onglet).Range("F3") = honoraireclimois
Sheets(onglet).Columns("F:F").NumberFormat = "_($* #,##0.00_);_($*
(#,##0.00);_($* ""-""??_);_(@_)"
ThisWorkbook.Worksheets(onglet).Range("E6") = trio

Worksheets(onglet).Range("E6").NumberFormat = "[h]:mm"
Worksheets(onglet).Range("F6") = "æ*24*100"
End Sub