• Initiateur de la discussion Initiateur de la discussion isa44
  • 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 !

Re : Arrondi d'heure

bonjour

voir ici :
Cells(x, y) = Format(Valeur, "0.00")

essais comme ceci en faisant les deux calculs et tu comprendras !
Cells(x, y) = Valeur
perte au calcul des centièmes et tu ne retrouves plus tes valeurs dans le sens retour

il faut revoir ton format !
 
Dernière édition:
Re : Arrondi d'heure

Bonjour isa44, Roland,

Perso j'aurais fait ça, beaucoup plus simple :

Code:
Sub Bouton5_QuandClic() 'heure en centième
Dim cel As Range
For Each cel In Range("D10:H13")
 [COLOR="Red"] If cel.Text Like "*:*" Then[/COLOR]
    cel = cel * 24
  End If
Next
Range("D10:H14").NumberFormat = "0.00"
End Sub

Sub Bouton6_QuandClic() 'centième en heure
Dim cel As Range
For Each cel In Range("D10:H13")
  If IsNumeric(cel.Text) Then
    cel = cel / 24
  End If
Next
Range("D10:H14").NumberFormat = "hh:mm"
End Sub

Mais il serait plus simple aussi de n'utiliser qu'un seul bouton dont le libellé s'inverse à chaque clic 🙂

A+
 
Dernière édition:
Re : Arrondi d'heure

Re, salut pierrejean 🙂

Voici ce que peut donner le fichier avec un seul bouton.

La macro :

Code:
Sub Convertir() 'heure en centième
Dim cel As Range
Application.ScreenUpdating = False
With ActiveSheet.DrawingObjects(Application.Caller)
  .Text = "Tableau en " & IIf(InStr(.Text, "centième"), "", "centième d'") & "heures"
  Range("D7") = "En " & IIf(InStr(.Text, "centième"), "", "centième d'") & "heures"
  For Each cel In Range("D10:H13")
    If cel.Text Like "*:*" Then
      cel = cel * 24
    ElseIf IsNumeric(cel.Text) Then
      cel = cel / 24
    End If
  Next
  Range("D10:H14").NumberFormat = IIf(InStr(.Text, "centième"), "hh:mm", "0.00")
End With
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : Arrondi d'heure

Re

Pour le fun avec un seul bouton
(Mais moins brillant que celui de Job 🙂 🙂)

Code:
Sub centiemes()
Set plage = Range("D10:H14")
ActiveSheet.Shapes("Button 5").Select
If Selection.Characters.Text = "Centiemes" Then
  plage.NumberFormat = "hh:mm"
  Selection.Characters.Text = "Heures"
Else
For Each cel In plage
x = Int(cel.Value * 2400) / 100
cel.NumberFormat = CStr(Int(x)) & "\," & CStr(Int((x - Int(x)) * 100))
Next cel
 Selection.Characters.Text = "Centiemes"
End If
Range("D9").Select
End Sub
 

Pièces jointes

Re : Arrondi d'heure

Re,

Et attention à vos formules en ligne 15 : elles soustraient des choux et des carottes quand les unités utilisées sont différentes...

Pour éviter ça, entrer en D15 la formule :

Code:
=D14-SI($D7="En heures";D26;D26*24)

ou mieux (plus léger) :

Code:
=D14-D26*24^($D7<>"En heures")

A tirer sur la droite.

Par ailleurs, il faut que la ligne 15 soit aussi formatée, donc ce code :

Code:
Range("D10:H[COLOR="Red"]15[/COLOR]").NumberFormat = IIf(InStr(.Text, "centième"), "hh:mm", "0.00")

A+
 
Dernière édition:
- 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
11
Affichages
245
  • Question Question
XL pour MAC fonction si
Réponses
5
Affichages
361
Réponses
4
Affichages
309
Réponses
3
Affichages
470
  • Question Question
Réponses
11
Affichages
426
Réponses
4
Affichages
365
Retour