[RESOLU]Heure Minute en Heure Centième - VB

Ternoise

XLDnaute Occasionnel
Bonsoir le Forum

Je viens de m’apercevoir d’un problème dans le calcul d’heure

Ce bout de code calcul des heures minutes
If TextAmplitude <> "" Then Me.TextEffectif = heure(Me.TextAmplitude) * Val(Replace(Me.TextCoef, ",", "."))

Exemple actuellement quand

TextAmplitude = 8 :30
Coef = 0,90
TextEffectif = 7,65

Or j’aimerais avoir des heures au centième

Soit TextEffectif = 7,39

Mais comment changer ceci ?

Merci de votre aide
David
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Bonsour®
Dim HoraireCent As Double
HoraireCent = HoraireSexa / TimeValue("1:00")
et réciproquement :
HoraireSexa = HoraireCent * TimeValue("1:00")

plus précisément selon l'exemple :
TextEffectif = "8:30"
Coeff = 0.9
MsgBox Coeff * TimeValue(TextEffectif) / TimeValue("1:0")
 

Ternoise

XLDnaute Occasionnel
Re : Heure Minute en Heure Centième - VB

Bonsoir Modeste

J'ai peur de t'avoir perdu la !!! :eek:

08h30 c'est un travail de 07:00 à 15:30 donc de l'amplitude et pas de l'effectif

Coef réducteur 0,90

donc Heure effectif 7,39

Private Sub TextAmplitude_Change()
If TextAmplitude = "" Then Exit Sub
If TextAmplitude <> "" Then Me.TextEffectif = heure(Me.TextAmplitude) * Val(Replace(Me.TextCoef, ",", "."))
End Sub

Concrètement, cela donne quoi pour mon bout de code ? :confused:

Merci de toutes aides
David
 

job75

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Bonsoir Ternoise, salut Pierre, Modeste geedee,

Faudrait pas faire n'importe quoi Ternoise.

Donc ne pas mettre la cellule G13 au format [hh],mm qui redonne des heures et des minutes :eek:

Fichier joint.

A+
 

Pièces jointes

  • Classeur Heure(1).xls
    23.5 KB · Affichages: 59

Ternoise

XLDnaute Occasionnel
Re : Heure Minute en Heure Centième - VB

Re,
Ce classeur était un exemple afin de faire voir le résultat que je recherche en remplaçant cette ligne de code

If TextAmplitude <> "" Then Me.TextEffectif = heure(Me.TextAmplitude) * Val(Replace(Me.TextCoef, ",",

Cette dernière me renvoi 7,56 mais j'aimerais qu'elle me renvoi 7,39 comme mon ancien logiciel de calcul d'heure.

En fait c'est bien des Heure Minute que je recherche !!!:eek:
 

Modeste geedee

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Bonsour®

quand on utilise le symbolisme hh:mm:ss ,
EXCEL interprète "by Design" la valeur comme un horaire en heure minute(0 à 59) et seconde (0 à 59)

quand on utilise le symbolisme décimal "entier , décimal"
c'est la partie décimale qui désigne la fraction d'heure

1 seule décimale on parle alors de dixièmes d'heure (0 à 9)
2 décimales on parle centièmes d'heure(0à 99)
3 décimales se sont alors des millièmes d'heure(0 à 999)
et ainsi de suite

c'est une règle mathématique indépendante d'EXCEL
c'est une aberration de vouloir dire que 7,39 représente 7heures et 39 minutes !!!
Persister dans ce sens ne pourra qu'aboutir à des résultats erronés...

ne pas oublier que pour EXCEL un nombre décimal représente également une date, suivi d'une partie décimale qui est alors une fraction de jour(24h)
 

job75

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Re,

Comme quoi faut toujours commencer par le commencement.

Si vous tenez vraiment à la virgule (?) comme séparateur des heures et des minutes, utilisez :

Code:
Private Sub CommandButton1_Click()
If Not IsDate(TextAmplitude) Then TextAmplitude.SetFocus: Exit Sub
TextEffectif = heure(TextAmplitude, TextCoef)
End Sub

Function heure(str As Date, coef As String)
heure = 24 * str * Val(Replace(coef, ",", "."))
heure = Int(heure) & "," & Round(60 * (heure - Int(heure)), 2)
End Function
A+
 

job75

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Re,

Et si la logique l'emporte vous utiliserez les 2 points : comme séparateur :

Code:
Private Sub CommandButton1_Click()
If Not IsDate(TextAmplitude) Then TextAmplitude.SetFocus: Exit Sub
TextEffectif = heure(TextAmplitude, TextCoef)
End Sub

Function heure(str As Date, coef As String)
heure = 24 * str * Val(Replace(coef, ",", "."))
heure = Int(heure) & ":" & Round(60 * (heure - Int(heure)), 2)
End Function
A+
 

job75

XLDnaute Barbatruc
Re : Heure Minute en Heure Centième - VB

Re,

Ah j'oubliais que "Amplitude" peut atteindre ou dépasser 24 h, donc utiliser :

Code:
Private Sub CommandButton1_Click()
If UBound(Split(TextAmplitude, ":")) = 1 Then
  TextEffectif = heure(TextAmplitude, TextCoef)
Else
  TextAmplitude = ""
  TextAmplitude.SetFocus
End If
End Sub

Function heure(str As String, coef As String)
heure = Val(Split(str, ":")(0)) + Val(Split(str, ":")(1)) / 60
heure = heure * Val(Replace(coef, ",", "."))
heure = Int(heure) & ":" & Format(60 * (heure - Int(heure)), "00")
End Function
A+
 

Ternoise

XLDnaute Occasionnel
Re : Heure Minute en Heure Centième - VB

Re Job

Non l'amplitude ne peux pas dépasser 24h !!!! Déjà 14h de travail c'est pas mal !!!

Par contre si je persiste à ne pas être logique, cela pose problème avec en exemple 11h45 d'amplitude
Il manque l'arrondi à la minute supérieur je pense !

Merci à tous et j'espère rejoindre, un jour Modeste et vous tous dans ma logique !
David
 

Discussions similaires

Statistiques des forums

Discussions
314 633
Messages
2 111 404
Membres
111 124
dernier inscrit
presa54