Convertion minutes en heures [VBA]

Bonjour,

J'ai un programme que voici :

    Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 4 Then
    'Ecris lheure actuelle dans la colonne D apres avoir scanner le START
        Cells(Target.Row, 4).Value = Time()
    End If

    If Target.Column = 5 Then
    'Ecris lheure actuelle dans la colonne E apres avoir scanner le END
        Cells(Target.Row, 5).Value = Time()
    End If

    If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
    'Permet la soustraction des heures du debut et de fin
        Target.Offset(0, 1) = Format(Target.Offset(0, -1).Value - Target.Value, "hh:mm:ss")
    End If
    End Sub 

Et je souhaiterai que quand il fait la soustraction des deux heures du début et de fin il m'affiche le résultat en heure (30 minutes = 0.5 heure)

Pouvez-vous m'aider svp ?

Hey Pite x) !

Je serais ravi de regarder ta demande mais sans le fichier Excel (et même avec le code) on a pas de contenu pour t'aider :3

Yo Juice, il y avait longtemps

Voici mon excel pour mieux comprendre

17tableau.xlsm (18.53 Ko)

Hey!

Bon j'ai bien essayé de mettre en place une solution mais quand j'ai commencé faire des test, Excel à grave buger puisque ton tableau fais quand même plus d'un million de ligne °^°

WHAT THE

Obliger d'user de la technique du Ctrl + Alt + Supp pour forcer la fermeture du fichier :p

Et ce n'est pas ma formule toute meugnonne qui à fais buger l'Excel mais bien la quantité de ligne.

Bref! Voici la solution que je te propose :

HEURE(E2-D2)+(MINUTE(E2-D2)/60)

A rentrer dans ta cellule F2

Voilà, je reste à ta disposition !

Merci de ton aide mais c'est une formule à rentrer dans une cellule, moi je la souhaiterai en VBA penses-tu que cela est possible ?

Oui oui tu lance l’enregistreur de macro et tu la rentre dans ta cellule

Puis tu te sers de cette enregistrement en l'adaptant à ta macro !

Ok, je comprend ce que tu me dis, j'y avais jamais pensé c'est une bonne technique cependant rien que en mettant la formule il ne fait pas le calcul

capture

Pite,

Tu aurais pas oublié le signe égal devant la formule quand même :p ?

[img]https://www.casimages.com/i/180621101151292330.png.html][IMG]https://nsa39.casimages.com/img/2018/06/21/mini_180621101151292330.png[/IMG[/img]

J'ai honte....

Sinon quand je rentre formule du coup il me faite cela :

capture 3 capture2

Pite,

J'ai honte....

Mais non aucun problème :0

Sinon quand je rentre formule du coup il me faite cela :

Il enlève une parenthèse qui n'est en effet pas obligatoire, mais du coup il faut que tu remplace le format "personnalisée" par le format " Standard"

Cela fonctionne !

Mais pourquoi il m'affiche plein de valeur dans la colonne entière ?

capture 4 capture 6

Il t'affiche un résultat par défaut puisque tu utilise une formule :p

C'est comme si tu fessais un =SOMME(d'une plage vide) ton résultat affiché serra 0

Si sa te dérange alors rajoute un =SI(E2="";"";FORMULE) et il n'y aura plus de zéro

Ok, parfait la formule donne cela (si ca peut aider)

 =SI(E3="";"";(E3-D3)+(MINUTE(E3-D3)/60)) 

Je test maintenant l'enregistrement de la macro, je te tiens au courant !

Merci !

Bonjour,

une solution sans formule (via macro). dans ton calcul la différence d'heure est négative) (heure de début-heure de fin donne un nombre négatif).

ajout de application.enableevents=false et true pour éviter le plantage d'excel.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 4 Then
        'Ecris lheure actuelle dans la colonne D apres avoir scanner le START
        Application.EnableEvents = False
        Target.Value = Time()
        Target.NumberFormat = "hh:mm:ss"
        Application.EnableEvents = True
    End If

    If Target.Column = 5 Then
        'Ecris lheure actuelle dans la colonne E apres avoir scanner le END
        Application.EnableEvents = False
        Target.Value = Time()
        Target.NumberFormat = "hh:mm:ss"
        Target.Offset(0, 1) = 24 * (Target.Offset(0, -1).Value - Target.Value)
        Target.Offset(0, 1).NumberFormat = "0.00"
        Application.EnableEvents = True
    End If

End Sub

Bonjour,

une solution sans formule (via macro). dans ton calcul la différence d'heure est négative) (heure de début-heure de fin donne un nombre négatif).

ajout de application.enableevents=false et true pour éviter le plantage d'excel.

Merci h2so4

C'est bien ce que je demandais ! J'ai inversé le heure de début-heure de fin pour avoir un résultat positif

La ligne qui'il faut modifier:

 Target.Offset(0, 1) = 24 * (Target.Value - Target.Offset(0, -1).Value)

Merci aussi a toi Juice, je vais approfondir la technique de la formule, ça pourrait m'être utile !

Rechercher des sujets similaires à "convertion minutes heures vba"