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

  • Initiateur de la discussion Initiateur de la discussion Ternoise
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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")
 
Re : Heure Minute en Heure Centième - VB

Bonsoir Modeste

J'ai peur de t'avoir perdu la !!! 😱

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 ? 😕

Merci de toutes aides
David
 
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 !!!😱
 
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)
 
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+
 
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+
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Retour