Dans les formats des cellules, comment taper un chrono, mm:ss

Bonsoir,

Je ne voudrais entrer que les minutes et secondes sans avoir à entrer systématiquement l'heure.

à savoir que le format "mm:ss" m'oblige qd même à entrer l'heure :-(((

Une solution ?

Merci :))))))

Bonne soirée

Bonjour,

Essayez ce format personnalisé:

00":"00

puis dans la cellule, saisissez les temps comme ceci: "mss" ou "mmss" sans les 2points de séparation, il faut saisir impérativement les secondes avec 2 chiffres. exemples:

125 donnera 01:25

1242 donnera 12:42

Bonjour,

Attention ! 12 minutes et 35 secondes avec la mise en forme proposée donne bien 12:35, mais qu'allez vous faire de cette valeur ? Car dans la cellule c'est bien 1235 qui sera pris en compte, alors que 12 minutes et 35 secondes c'est égale à : 0,00873842592592593 !

Donc si les mise en formes de cellules ne fonctionnent pas comme voulues, peut-on passer par VBA ?
Dans ce cas il suffira de faire une surveillance événementielle sur les cellules concernées et lorsque l'on sort de ces dernières VBA met le format voulu tout en gardant la valeur "numérique" de la donnée.

@ bientôt

LouReeD

Une proposition :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Valeur
    On Error GoTo Fin
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Application.EnableEvents = False
        Select Case Len(Target)
            Case 2
                Valeur = "00:00:" & Target
            Case 3
                Valeur = "00:0" & Left(Target, 1) & ":" & Right(Target, 2)
            Case 4
                Valeur = "00:" & Left(Target, 2) & ":" & Right(Target, 2)
            Case Else
                GoTo Fin
        End Select
        Range("A1") = Format(Valeur, "hh:mm:ss")
    End If
Fin:
    Application.EnableEvents = True
End Sub

Avec en cellule A1 ici pour l'exemple du code le format de cellule mm:ss.

Il y a certainement possibilité de simplifier ce code me semble-t-il.

@ bientôt

LouReeD

Bonjour à tous,

si le classeur n'est que pour toi tu pourrais laisser en hh:mm en sachant que pour les calculs tu dois diviser /60
eric

Ca c'est vraiment plus simple !

@ bientôt

LouReeD

Arturo89, merci :-)))

Tu m'avais proposé, l'an passé cette méthode et ça fonctionnait à merveille sauf que ce coup-ci j'ai besoin de transformer le tout en secondes, ce qui n'est pas possible avec le 00":"00. Mais c'était encore une fois une super idée de ta part que j'ai utilisée pour tout le reste ! :-)))))))))))

Bonjour Eriiic et merci,

Franchement c'est une très idée astucieuse mais je ne veux pas devoir entrer les 6 chiffres du 00:00:00 car en hh:mm c'est ce que ça donne ! ;-))))

Bonjour LouReeD et merci bcp,

Ton code oblige à entrer 6 chiffres quand même. Je viens de le tester ;-)))

à bientôt.

Bonne soirée :-))))

Bonsoir,

S'il vous faut convertir en secondes alors, saisissez la valeur comme j'ai proposé précédemment, la macro fera le reste:

A copier dans le module de la feuille:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    Nb_Valeur = Len(Target)
    Select Case Nb_Valeur
        Case 2
            Target = "00:mn " & Target & "s"
        Case 3
            Target = (Left(Target, 1)) * 60 + Right(Target, 2)
        Case 4
            Target = (Left(Target, 2)) * 60 + Right(Target, 2)
    End Select
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Merci Arturo83

Je l'ai fait mais en utilisant la formule ci-dessous, ça ne me donne rien.

=(MINUTE(BE3)*60+SECONDE(BE3))/60

C'est surement qu'il faut en utiliser une autre ;)

image

Essayez ceci:

=SI(NBCAR(BE3)<=2;BE3;
SI(NBCAR(BE3)=3;GAUCHE(BE3;1)*60+DROITE(BE3;2)*1;
SI(NBCAR(BE3)=4;GAUCHE(BE3;2)*60+DROITE(BE3;2)*1)))

Bonsoir,

Ce doit être la version d'excel... Ha ben non on a la même !

Avec le select case sur le nombre de chiffre entré il y a a minimum deux chiffres à taper et le code ajoute les 4 autres, donc 2 chiffres = des secondes, 3 chiffres = une unité de minute et deux pour les secondes, 4 chiffres = 2 pour les minutes et deux pour les secondes, dans tous les cas les deux correspondent aux heures sont ajoutés automatiquement !

Pour la solution d'Éric, nul besoin d'entrer 6 chiffres, vous remplacez les données des minutes en heures et les secondes en minutes, mais il faut mettre les deux points.

Je me demande comment vous faites avec mon code

@ bientôt

LouReeD

LouReeD tu as raison, je me suis mal exprimé : je peux n'entrer que 4 chiffres mais dans l'invite du format on me demande 6 chiffres même si en entrant que 4 ça marche ;-)))

Arturo83,

Qd je mets ta formule, ça beug complet car Excel me la transforme bizarrement :

Essaye, tu vas voir ;-)))

Bonjour,

Ça marche bien chez moi, j'ai ajouté la condition suivante, si la cellule BE est vide, on affiche rien, voici la formule légèrement modifiée:

=SI(BE3="";"";SI(NBCAR(BE3)<=2;BE3;
SI(NBCAR(BE3)=3;GAUCHE(BE3;1)*60+DROITE(BE3;2)*1;
SI(NBCAR(BE3)=4;GAUCHE(BE3;2)*60+DROITE(BE3;2)*1))))

Il faut recopier la formule telle quelle, (pour une question de lisibilité, je l'ai éclatée sur plusieurs lignes. Pour écrire une formule sur plusieurs lignes, il faut après chaque point-virgule en bout de ligne, appuyer sur ALT + ENTREE pour aller à la ligne et continuer à écrire la suite de la formule)

Cdlt

bonjour Arturo83 et mci bcp, encore une fois :-))))

Tu m'impressionnes vraiment par la diversité de tes connaissances. Tu trouves tjrs des solutions !!!!!!!!!!!

C'est bien le résultat que j'avais trouvé hier, c'est seulment que je n'arrive pas à réagir sur ta formule.

Eh vui, tu as raison, comme d'hab, c'est juste que le résultat doit être divisé par 60 te je ne sais pas comment agir sur ta formule ;-))

Par exemple je devrais avoir, au lieu de 1291, 1291 divisé par 60 soit 21,5 !

G essayé plusieurs choses mais je suis à des années lumières de ton niveau professionnel !!! ;-)))

Désolé de t'embêter pour la x ième fois...

Bonne journée :-))))))

image

alors ceci:

=SI(BE3="";"";(SI(NBCAR(BE3)<=2;BE3;
SI(NBCAR(BE3)=3;GAUCHE(BE3;1)*60+DROITE(BE3;2)*1;
SI(NBCAR(BE3)=4;GAUCHE(BE3;2)*60+DROITE(BE3;2)*1))))/60)

Merci à tous :-)))))

Et merci Arturo83, l'incontournable !!!!

Car ça marche :-)

J'ai juste un bug régulier qd je clique sur Réafficher toute la liste, et ceci qd la liste est déjà affichée dans sa totalité ;)

image

re,

pas la solution idéalle en utilisant "on error ..."

Bonjour,

Comme l'a écrit BsAlv, il suffit d'jouter une gestion d'erreur.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Target.Address = "$D$1" Then
        ActiveSheet.ShowAllData
    End If
    Calculate 'permet d'appliquer la MFC sur la ligne sélectionnée
End Sub

**************************************************************************************************************************

On peut aussi, traiter la cause de l'erreur, en comparant le nombre total de lignes du tableau avec le nombre de lignes visibles après filtrage.

Là aussi, il y a une gestion d'erreur mais qui est là, uniquement pour forcer la sortie de la macro en cas d'anomalies pendant le déroulement de la macro, mais la cause de cette anomalie, ne sera pas provoquée par l'absence de zone filtrée. Certes, c'est un poil plus long mais plus "propre", enfin, c'est mon point de vue.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Derlig&, Nb_lig_Vis&
    On Error GoTo Sortie ' si une erreur se produit en cours d'exécution, on se redirige vers la sortie
    Application.EnableEvents = False ' on arrête la surveillance évènementielle
    Derlig = Range("A" & Rows.Count).End(xlUp).Row - 2 'nombre total de lignes du tableau - les 2 premières
    Nb_lig_Vis = Range("_FilterDataBase").Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1 'Nombre de lignes visibles après filtrage
    'si la cellule sélectionnée est D1 et la comparaison du nombre de lignes entre DerLig et Nb_lig_Vis est différente, alors on désactive le filtre
    If Target.Address = "$D$1" And Nb_lig_Vis <> Derlig Then ActiveSheet.ShowAllData
    Calculate 'permet d'appliquer la MFC sur la ligne sélectionnée
Sortie:
    Application.EnableEvents = True ' on remet en marche la surveillance évènementielle
End Sub

Cdlt

Bonjour Arturo83,

Et encore merci pour tt...

Je vais regarder tt ça ce soir car au boulot, je n'ai pas accès au net.

Bonne journée :-))))))))))))))

Rechercher des sujets similaires à "formats comment taper chrono"