Transformer un nombre en mm:ss

Bonjour à tous,

Je suis enseignant d'EPS et je cherche à rentrer les temps de mes élèves dans un fichier excel. Pour me faciliter la tâche, je souhaiterai simplement taper 123 et que cela m'affiche 01:23 (pour 1 minute 23 secondes) dans la cellule.

J'ai déjà tenté de changer le format de cellule en mm:ss mais rien n'y fait, lorsque je tape 123 ou un autre nombre, je me retrouve avec 00:00 à tous les coups.

J'ai trouvé un fichier d'un collègue qui a réussi à faire ça, mais lorsque je copie-colle ces cellules, son format de cellule n'intègre pas mon document.

Merci d'avance de vos réponses, ou n'hésitez pas à me renvoyer vers une autre page si ce sujet à déjà été traité (malgré mes nombreuses recherches infructueuses).

Bonne journée

Bonjour,

Essaie avec ce format là " 00":"00 ", par contre il ne saura pas que c'est des minutes, pour lui c'est juste un nombre avec un ":" au milieu donc si jamais tu fais des additions avec ça va coincer :s

Bonjour Watewmark,

Oui j'ai déjà essayé avec ce système, et ça marche, mais comme il ne reconnait pas les minutes, cela coince pour la suite des macros que j'utilise comme j'ai mis en place un barème automatique en fonction des temps de courses =/

Re,

Des macros carréments

Est-ce que tu pourrais joindre un fichier exemple (en enlevant le nom des eleves ) pour qu'on y vois un peu plus clair .

Il va falloir jongler avec des modulo 60 je pense . Mais peut être que il y a plus simple faut voir ce que tu fais comme calcul

Bonjour,

Tu peux tester ce code de conversion (à placer dans le module de la feuille).

L'exemple fonctionne avec une saisie dans la cellule A1.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$A$1" Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Target = Int(Target / 100) / 24 / 60 + (Target Mod 100) / 24 / 3600
            Target.NumberFormat = "[mm]:ss"
            Application.EnableEvents = True
        End If
    End If
End Sub

A+

Voici le fichier que j'utilise (Classeur 1) et je vous donne aussi le fichier du collègue avec la transformation automatique (Tableau 3x500),

Merci de ta réponse Frangy, mais mon niveau de débutant ne me permet pas de comprendre ton explication, je suis désolé ... Je veux bien tester ton code, si tu me dis ce qu'est le module de la feuille ?

Merci à tous les deux


Re Frangy,

En cherchant un peu pour ne pas t'embêter, j'ai trouvé mes réponses et j'ai testé ton astuce, elle marche !

Comment faire pour l'appliquer à d'autres cellules que A1 ?

Merci beaucoup

6classeur1.xlsx (20.78 Ko)

Merci beaucoup à tous les deux, je viens d'arriver à trouver la solution,

Je suis aller chercher le code utilisé par mon Collègue dans le module (dont j'ignorais l'existence) et je l'ai copié sur ma feuille et tout marche ! Pour info, voici le code :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim TimeStr As String

On Error GoTo EndMacro

If Application.Intersect(Target, Range("D7:F41")) Is Nothing Then

Exit Sub

End If

If Target.Cells.Count > 1 Then

Exit Sub

End If

If Target.Value = "" Then

Exit Sub

End If

Application.EnableEvents = False

With Target

If .HasFormula = False Then

Select Case Len(.Value)

Case 1 ' e.g., 1 = 00:01

TimeStr = "00:00:" & .Value

Case 2 ' e.g., 12 = 00:12

TimeStr = "00:00:" & .Value

Case 3 ' e.g., 735 = 7:35

TimeStr = "00" & ":" & _

Left(.Value, 1) & ":" & _

Right(.Value, 2)

Case 4 ' e.g., 1234 = 12:34

TimeStr = "00" & ":" & _

Left(.Value, 2) & ":" & _

Right(.Value, 2)

Case Else

Err.Raise 0

End Select

.Value = TimeValue(TimeStr)

End If

End With

Application.EnableEvents = True

Exit Sub

EndMacro:

MsgBox "Attention, ce n'est pas un temps valable"

Application.EnableEvents = True

End Sub

Quand j'aurais plus de temps, j'essayerai de comprendre les étapes de ce code, mais en tout cas, merci à vous deux pour votre aide,

Bonne journée,

Pour te répondre ... quand même

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("D8:F42")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Target = Int(Target / 100) / 24 / 60 + (Target Mod 100) / 24 / 3600
            Target.NumberFormat = "[mm]:ss"
            Application.EnableEvents = True
        End If
    End If
End Sub

A+

Merci pour la réponse,

C'est le fameux "Range" que je n'avais pas pour appliquer à mes cellules, merci d'avoir pris le temps de répondre =)

Re,

Rechercher des sujets similaires à "transformer nombre"