Convertir aussi bien 731 en 07:31 et 1031 en 10:31

Bonjour et merci de vous pencher sur mon problème.

Je souhaite convertir des nombres d'une colonne qui comportent soit 3 chiffres, soit 4 en heure. Mais "textuellement", c'est à dire que 731 doit devenir 7:31 (ou 07:31 c'est égal) et que 1031 doit devenir 10:31.

Je deviens fou à essayer de chercher, les seules réponses que je trouve sont du type convertir 3,5 vers 3:30 mais ce n'est pas du tout ce que je recherche.....

Bonsoir

Essaie:

=TEXTE(GAUCHE(TEXTE(A3;"0000");2)&":"&DROITE(TEXTE(A3;"0000");2);"hh:mm")

Cordialement

Merci beaucoup !!!

C'est exactement ça.

Tu me retires une belle épine du pied...

Bonjour,

Une autre formule à tester :

=SUBSTITUE(TEXTE(A1/100;"0.00");".";":")*1

Cellule à mettre au format hh:mm

@+

Merci thibo. Mais après test, t solution ne fonctionne pas pour mon problème. Celle d'Amadéus sans soucis....

re,

Il se pourrait qu'il faille que tu changes le . par une ,

=SUBSTITUE(TEXTE(A1/100;"0,00");",";":")*1

(le point étant le séparateur décimal que j'utilise)

Sinon, donne moi plus de détails sur les cas où ça ne fonctionne pas.

A te (re)lire

@+

C'est parfait, merci beaucoup....

Plusieurs solutions pour résoudre le même problème, c'est la magie d'excel...

J'adore, je vais devenir addict de cette application. Prochaine étape, les macros (je souhaite monter des plannings un peu particulier) mais ce n'est pas le sujet ici.....

Merci thibo, merci Amadéus, de votre soutien et de votre rapidité. Peut-être un jour pourrais-je aider les autres aussi, j'aimerais bien.....

Au plaisir !!!

On m'a communiqué encore une autre alternative, que je poste ici, ça peut aider d'autre.

C'est dachevid de "aide-excel.forumactif" qui me là transmise :

"J'ai 731 en A1.

En B1 :

=(ENT(A1/100)+((A1/100)-ENT(A1/100))*100/60)/24

Je divise le nombre par 100 (7,31) puis je ne récupère que les décimales (le nombre 7,31 moins le nombre entier 7 donc 0,31). Je le multiplie par 100 et divise par 60 pour obtenir un centième d'heure et non pas un soixantième, 0,31 devient environ 0,51 soit plus de la moitié d'une heure.

Ensuite je lui ajoute 7 (le nombre entier de A1/100) pour obtenir 7,51, on divise le tout par 24 car on veut le résultat en heure et pas en nombre, il n'y a plus qu'à modifier le résultat à l'aide d'un format Heure et on obtient 7:31."

Merci à lui et encore à thibo et Amadéus....

rere,

Histoire de compléter la collection, une simplification de la dernière formule :

=(ENT(A1/100)+(MOD(A1;100))/60)/24

@+

Merci, belle collection !!!

Vous avez une idée pour faire l'inverse ?

J'ai 07:31 et je veux avoir le chiffre 731. Mais peut-être dois-je re poster......

re,

En inversant la dernière formule :

=ENT(A1*24)*100+MOD(A1*24;1)*60

Je te laisse tester

@+

Merci beaucoup...

ça marche pour une cellule mais la recopie incrémentée plante, je ne comprends pas, les formules paraissent adaptées dans chaque cellule mais j'ai la valeur de la première seulement qui est recopiée. ça ne marche que une par une, à la main. Sans doute un truc tout bête, mais je n'ai pas d'idée...

re,

Je viens de faire l'essai avec Excel 2003 : pas de souci.

Peut-être de ton côté voir si tu ne serais pas en Calcul sur ordre.

Je te laisse trouver où ça se trouver sur Excel 2007

Bonne soirée

@+

Bonjour à tous !

Je déterre ce vieux post à défaut d'en créer un nouveau.

Je cherche à créer des fonctions personnelles qui appliquent ces mêmes formules.

J'ai essayé par moi même sans succès.

Merci par avance !!

Re bonjour,

Je m'auto répond sur les passages en fonctions personnelles :

Function Enheure(Chiffre As String) As String
' Pour convertir 715 en 07:15 par exemple

        Enheure = Format((Int(Chiffre / 100) + ((Chiffre / 100) - Int(Chiffre / 100)) * 100 / 60) / 24, "hh:nn")

End Function

Function Enchiffre(Heure As String) As String
' Pour convertir 07:15 en 0715 par exemple

        Enchiffre = Format((Int(Heure * 24) * 100) + ((((Heure * 24) * 100) - (Int(Heure * 24) * 100)) * 0.6), "0000")

End Function

Mais c'est du bidouillage avec des infos glanées à droite à gauche... Si vous avez des idées pour simplifier...

Merci encore à tous !!!

Erreur de ficelle

Bonsoir

A tester

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("A1:A10"), Target) Is Nothing Then
    Application.EnableEvents = False
    If Target > 0 And Target < 2360 Then
      On Error Resume Next
      Select Case Len(Target)
        Case 4
          Target = CDate(Left(Target, 2) & ":" & Right(Target, 2))
        Case 3
          Target = CDate(Left(Target, 1) & ":" & Right(Target, 2))
        Case 1, 2
          Target = CDate("0:" & Target)
      End Select
      If Err.Number > 0 Then
        MsgBox "heure non reconnue"
        Target = ""
      End If
    End If
    Application.EnableEvents = True
  End If
End Sub

Cela permet de saisir de 1 à 2359 et gère les erreurs style : 180 ou 170

Rechercher des sujets similaires à "convertir aussi bien 731 1031"