Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

additionner des heures

a10

XLDnaute Impliqué
Bonjour

comment additionner des heures et des minutes

par exemple
1h 30 minutes +1h 5minutes soit égale à 2h35 minutes
 

a10

XLDnaute Impliqué
Re : additionner des heures

Bonsoir,

je voudrais que les personnes inscrives les heures 3.3 pour 3 heure 30 minute
comme cela: 3,3

ce format me semble compliquer à expliquer 03:30

est il possible de garder le format 3.3?

a+
 

job75

XLDnaute Barbatruc
Re : additionner des heures

Bonjour a10, CHALET53, Jean-Claude, Patrick,

Plutôt tordu comme problème mais bon, voyez le fichier joint.

Les colonnes A et B sont au format Standard.

Colonne C au format [h]:mm, formule en C2 :

Code:
=SUBSTITUE(TEXTE(SI(ESTNUM(-SUBSTITUE(A2;".";","));SUBSTITUE(A2;".";",");SUBSTITUE(A2;",";"."));GAUCHE(1/1000;4));STXT(1/10;2;1);":")+SUBSTITUE(TEXTE(SI(ESTNUM(-SUBSTITUE(B2;".";","));SUBSTITUE(B2;".";",");SUBSTITUE(B2;",";"."));GAUCHE(1/1000;4));STXT(1/10;2;1);":")
Colonne D au format Standard, formule en D2 :

Code:
=--SUBSTITUE(TEXTE(SUBSTITUE(TEXTE(SI(ESTNUM(-SUBSTITUE(A2;".";","));SUBSTITUE(A2;".";",");SUBSTITUE(A2;",";"."));GAUCHE(1/1000;4));STXT(1/10;2;1);":")+SUBSTITUE(TEXTE(SI(ESTNUM(-SUBSTITUE(B2;".";","));SUBSTITUE(B2;".";",");SUBSTITUE(B2;",";"."));GAUCHE(1/1000;4));STXT(1/10;2;1);":");"[h]:mm");":";STXT(1/10;2;1))
Ces formules fonctionnent quel que soit le séparateur décimal de l'ordi.

Edit pour Patrick : utiliser VBA n'est pas simple car VBA ne reconnaît pas le format [h]:mm.

A+
 

Pièces jointes

  • Heures bizarroïdes(1).xls
    25 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc
Re : additionner des heures

Re,

Les formules précédentes ne permettent pas de traiter les heures négatives.

On y parvient en utilisant le Calendrier depuis 1904 et ces formules en C2 et D2 :

Code:
=(-1)^(GAUCHE(A2)="-")*SUBSTITUE(TEXTE(ABS(SI(ESTNUM(-SUBSTITUE(A2;".";","));SUBSTITUE(A2;".";",");SUBSTITUE(A2;",";".")));GAUCHE(1/1000;4));STXT(1/10;2;1);":")+(-1)^(GAUCHE(B2)="-")*SUBSTITUE(TEXTE(ABS(SI(ESTNUM(-SUBSTITUE(B2;".";","));SUBSTITUE(B2;".";",");SUBSTITUE(B2;",";".")));GAUCHE(1/1000;4));STXT(1/10;2;1);":")
Code:
=--SUBSTITUE(TEXTE((-1)^(GAUCHE(A2)="-")*SUBSTITUE(TEXTE(ABS(SI(ESTNUM(-SUBSTITUE(A2;".";","));SUBSTITUE(A2;".";",");SUBSTITUE(A2;",";".")));GAUCHE(1/1000;4));STXT(1/10;2;1);":")+(-1)^(GAUCHE(B2)="-")*SUBSTITUE(TEXTE(ABS(SI(ESTNUM(-SUBSTITUE(B2;".";","));SUBSTITUE(B2;".";",");SUBSTITUE(B2;",";".")));GAUCHE(1/1000;4));STXT(1/10;2;1);":");"[h]:mm");":";STXT(1/10;2;1))
Fichier (2).

A+
 

Pièces jointes

  • Heures bizarroïdes(2).xls
    25.5 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : additionner des heures

Re,


Les formules précédentes renvoient des valeurs d'erreur si des cellules sont vides en colonnes A ou B.

On peut facilement l'éviter mais pour la version (2) c'est possible seulement avec un fichier .xlsx (Excel 2007) car il y a plus de 8 niveaux d'imbrication.

Fichiers (1 bis) et (2 bis).

A+
 

Pièces jointes

  • Heures bizarroïdes(1 bis).xls
    36 KB · Affichages: 32
  • Heures bizarroïdes(2 bis).xlsx
    11.3 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : additionner des heures

Re,

En passant noter que l'aide Excel 2003 n'est pas claire sur les niveaux d'imbrication.

Elle parle d'un maximum de 7 niveaux (en comptant la 1ère fonction).

Or =SI(1;SI(1;SI(1;SI(1;SI(1;SI(1;SI(1;SI(1;1)))))))) a 8 niveaux et passe bien sur Excel 2003.

A+
 

job75

XLDnaute Barbatruc
Re : additionner des heures

Bonjour a10, le forum,

cela semble trop compliqué.

Compliqué oui mais trop non.

Il faut nécessairement jongler avec les formats et les virgules, points, 2 points.

Pour la solution (2 bis) on peut l'avoir en .xls en calculant la colonne D à partir de la colonne C.

Voir fichier joint.

A+
 

Pièces jointes

  • Heures bizarroïdes(2 bis).xls
    25.5 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re : additionner des heures

Re,

Peut-être qu'une solution VBA vous plaira davantage :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, h#
Set r = Intersect(Target, Range("A2:B" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
  Cells(r.Row, 3).Resize(, 2) = "" 'RAZ
  If Cells(r.Row, 1) & Cells(r.Row, 2) <> "" Then
    h = Heure(Cells(r.Row, 1)) + Heure(Cells(r.Row, 2))
    Cells(r.Row, 3) = h
    Cells(r.Row, 4) = Heure(h, True)
  End If
Next
End Sub

Function Heure(v, Optional op As Boolean = False)
Dim sg, p
sg = IIf(Left(CStr(v), 1) = "-", -1, 1)
v = Abs(Val(Replace(CStr(v), ",", ".")))
If op Then
  v = sg * (Int(v * 24) + (Round(v * 1440) - 60 * Int(v * 24)) / 100)
Else
  v = Format(v, "0.00")
  p = InStr(v, Mid(0.1, 2, 1)) 'position du séparateur décimal
  v = sg * (Left(v, p - 1) / 24 + Mid(v, p + 1) / 1440)
End If
Heure = v
End Function
C'est en effet plus simple à comprendre que les formules

Fichier joint.

A+
 

Pièces jointes

  • Heures bizarroïdes par VBA(1).xls
    37 KB · Affichages: 34

Discussions similaires

Réponses
9
Affichages
433
Réponses
6
Affichages
334
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…