Durée en lettre en durée en chiffres

Bjr à tous,

j'ai des durées de la forme x heures x minute(s) x seconde(s), par exemple "17 minutes 2 secondes" que j'aimerai changer en 00:17:02 ( en format "h:mm:ss")

J'essaie de faire ceci en VBA mais sans succès:

Si le mot après nombre de caractère à droite 3 ou 2 (ou compter 2 ou 3 à partir de la droite) est "minutes" -> Remplacer "minutes" en ":" puis ajouter "00:" devant pour que le format des cellules soit homogène et pour que l'on peut utiliser la formule Cellule / ("0:1:0").

Si le mot après nombre de caractère à droite 2 (ou compter 2 à partir de la droite) est "heures" ou "heure" -> Remplacer "heures" ou "heure", "minute" ou "minutes", et "secondes" ou "seconde" par ":" pour obtenir le format "h:mm:ss"

Merci d'avance!

Ci-dessous un fichier pour illustration.

hello,

Si c'est pour traiter un fichier contenant des données fixes, pourquoi ne pas passer par la fonction Find and Replace et éventuellement enregistrer une macro.

Tu cherches " "minute*" " et tu remplaces par ":" . Le " " représente un espace.

Pareil pour heure(s) et seconde(s).

J'ai le niveau d'une huitre en macro, donc a voir si cela peut convenir.

Sub Macroheuresminutes()
'
' Macroheuresminutes Macro
'

'
    Range("D4").Select
    Cells.Replace What:=" minute* ", Replacement:=":", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:=" heure* ", Replacement:=":", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:=" seconde*", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Merci pour ta réponse rapide Pincho, mais le problème se trouve au niveau des durées en minutes (sans heures), par exemple 11 minutes 11 secondes devient 11:11 alors que cela devrait être 00:11:11 pour que l'on puisse faire qqchose avec.

Bonjour,

j'arrive (péniblement à ceci) et je suis à mon max

P.

Bjr patrick1957

Merci beaucoup d'avoir pris cette peine.

Mais je voudrai que les résultats s'affiche sur la colonne juste à coté (C dans notre cas) mais je ne parviens pas modifier ton code.

Même si il n'existe pas de solution, je fais faire avec pour le moment.

Encore merci patrick1957

Bonjour toutes et tous,

merci à Patrick1957

j'ai ajouté 2 macros Private afin de mettre dans la colonne C

ci-joint

crdlt,

André

Je vous remercie

Je vais mettre du temps à comprendre les codes que vous avez donné.

Par exemple, est que vous pouvez m'expliquer la concaténation ( sans "&") ici

Je cherche qd meme un code plus simple et pas trop long (car il y a d'autres codes que je combine avec ceci).

Bjr patrick1957

Merci beaucoup d'avoir pris cette peine.

Mais je voudrai que les résultats s'affiche sur la colonne juste à coté (C dans notre cas) mais je ne parviens pas modifier ton code.

Même si il n'existe pas de solution, je fais faire avec pour le moment.

Encore merci patrick1957

Bonjour,

pas besoin d'allonger le code avec 2 sub...

les 2 dernières lignes avant le end sub sont celles ci

[C3].Resize(UBound(Tb, 1)) = Application.Index(Tb, , 5)     ' 5e colonne place la 5e colonne de la matrice en C3
[C:C].NumberFormat = "[hh]:mm:ss"                                       ' mets un format hh:mm à cette colonne C

Re,

merci Patrick1957

j'avais cela

[c3].Resize(UBound(Tb, 1)) = Application.Index(Tb, , 3) ' 5e colonne

pour cela que je ne comprenais pas trop merci

crdlt,

André

Bonjour,

proposition via une fonction personnalisée

Public Function TxtToTime(stime)
    t = Split(stime, " ")
    For i = LBound(t) To UBound(t)
        Select Case UCase(Left(t(i), 4))
        Case "HEUR", "HOUR"
            h = t(i - 1) + 0
        Case "MINU"
            m = t(i - 1) + 0
        Case "SECO"
            s = t(i - 1) + 0
        End Select
    Next i
    TxtToTime = TimeSerial(h, m, s)
End Function

Il ya un petit souci avec le code, il ne marche qu'avec les nombres de lignes existant i.e quant on ajoute des lignes ou avec plusieurs lignes, le code ne marche pas.

Merci

un fichier test

Désolé, je ne voyais pas ton message h2so4 avant d'avoir posté ces derniers.

Merci

merci. Je vais prendre ton code h2so4. Et je vais bien noter les vôtres Andre13 et patrick1957.

merci. Je vais prendre ton code h2so4. Et je vais bien noter les vôtres Andre13 et patrick1957.

Pas de soucis, je savais qu'il y avait moins tortueux que le mien et je n'ai pas tenté la fonction même si c'était mon idée première, mais comme indiqué, ce sont là mes limites

le code de H2SO4 est simple, court efficace comme je ne sais pas les faire mais je le comprends néanmoins

P.

le code de H2SO4 est simple, court efficace comme je ne sais pas les faire mais je le comprends néanmoins

P.

bonjour Patrick,

je me suis pourtant largement inspiré du tien

ok

Rechercher des sujets similaires à "duree lettre chiffres"