Calcul heures

Bonjour

J'ai un formulaire ou je rentre des heures : heure debut (HD), heure fin (HF).

Je veux faire la soustraction : HF - HD.

HF se trouve en celulle : H

HD se trouve en cellule : G

je veux mettre le rexulta dans : K

j'ai recuperer un code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H:H")) Is Nothing Then
Target.Offset(7, 3) = Format(Target.Offset(7, -1).Value - Target.Value, "HH:MM")
End If
End Sub

si j'ai bien compris ce code , je veux une action quand je click sur la colonne H n'importe ou.

Target.Offset(7, 4) 

à partir de ma 3eme colonne à droite ligne 7, je met le resultat.

Target.Offset(7, -1).Value 

je prend la valeur de ma colonne avant H c à d G, 7eme ligne tjrs et la soustrait à

Target.Value, "HH:MM"

c'est bien ca ?

Bonjour,

Veuillez fournir un fichier adapté à vos question !

Evitez d'utiliser Offset.

Utilisez:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iR#
   If Not Application.Intersect(Target, Range("H:H")) Is Nothing Then
      iR = Target.Row
      Cells(iR, 13) = Cells(iR, 8) - Cells(iR, 7)
      Cells(iR, 13) = Format(Cells(iR, 13), "hh:mm")
   End If
End Sub

A+

Bonjour Quattro ,

Bonjour Galopin.

Effectivement votre question manque de précision. Exemple :

"J'ai un formulaire" de quel genre ? un Userform ?

"ou je rentre des heures" Dans des textbox du userform ou directement dans des cellules excel ?

…. Du coup si c'est un userform pourquoi vouloir utiliser la soustraction de cellule si les infos sont dans des textbox ?

Et inversement si c'est une saisie directe dans les cellules excel ; pourquoi du vba alors qu'une simple formule fait la même chose.

Bonjour

En effet, il manque de précision.

Je vous joint mon fichier.

j'ai 2 questions :

1 - il y a une chose que je n'arrive pas à comprendre. Vos réponses mon donné des idées...

Je n'ai fait aucun code dans VBA en ce qui concerne le calcul de mes heures. c à d : Heure fin - Heure début.

J'ai juste mis dans la colonne K la formule, dans ma feuille excel :

= H - G

cela m'a bien donné le résultat de la soustraction dans K.

J'ai fait plusieurs ligne de test avec mon formulaire, tout nickel.

Ensuite j'ai effacer toutes mes lignes de test dans ma feuille excel. En toute logique ma formule ci-dessus doit être effacé.

Et bien non ?

Si je recommence mes tests avec le formulaire cela fonctionne. ???

Comment est ce possible ?

2 - mon code :

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dp = Mid(TextBox2, 3, 1):   ' 1ère partie
    Lg = Len(TextBox2):          
    If Lg <> 5 Or Dp <> ":" Then
    rep = MsgBox("pas bon1"): TextBox2 = "HH:MM"
    End If
    Exit Sub

    gauche = CInt(Left(TextBox2, 2)):   ' 2ème partie
    droite = CInt(Right(TextBox2, 2)) 
    If gauche > 24 Or droite > 59 Or (gauche = 24 And droite > 0) Then
    rep = MsgBox("Pas bon2"): TextBox2 = "HH:MM"
    End If

End Sub

ma 1ére partie de code me limite bien à 5 caracteres.

par contre ma 2ème partie, si je mes :

26:62

cela fonctionne ? normalement non...

C'est tout bon j'ai trouvé

Rechercher des sujets similaires à "calcul heures"