Bonjour Sylvainpyc, le Forum,
D'abord regarde bien le titre de ton sujet. C'est Récupérer l'heure....
Soit ta phrase comporte une heure correctement orthographiée. Soit ce n'est pas un format utilisée pour l'heure.
"Toto a rdv à h1 au médecin" => le résultat est 0h10
Aucun médecin (ni un membre de son secrétariat) n'écrira rdv à h1. Soit ce sera rdv à 0h10 ou rdv à 0h01.
Ou alors c'est un interne (à cette heure là) en 1ière année de médecine et il va redoubler. Car quel patient comprendrait rdv à h1.
Si tu utilises h pour désigner l'heure c'est qu'il existe au minimum un chiffre avant. Sinon on prends les mn (minutes).
Ensuite ton titre supposait qu'il y avait toujours une heure dans ta variable.
Donc j'ai omis la gestion d'erreur de ce fait.
Maintenant tu peux l'ajouter juste avant If IsNumeric
On Error GoTo Suite
If IsNumeric(H) Then HH = Replace(Trim(Mid(" " & Phrase(i), H, 5)), "h", ":"): Mn = Right(HH, 2)
HH = Left(CStr(TimeValue(HH)), 5 + (Mn = "00") * 2)
HH = Replace(HH, ":", "h")
Suite:
Next i
Par contre que feras tu dans le cas ou
"Toto a rdv avec rh dès 15h45 avec son dentiste"
Tu vas t'en mordre les doigts