Bonsoir, Avec mon vieux 2003 et mon vieux neurone, j'éprouve des difficultés Í extraire le groupe date-heure de ce texte.
Il s'agissait d'un PDF reçu, que j'ai copié-collé dans Excel.
J'aimerais extraire Date-Heure au format cel prévu Í cet effet.( jjjj jj mm aaaa hh:mm)
Mais je me mélange les pinceaux avec les "cherche" les espaces....
---------------
en A1 : Lundi 4 octobre Í 13h30 Allée des Bouleaux, 4140 Dolembreux
en A3: Lundi 11 octobre Í 13h30 Station d'épuration près du Ravel après le pont d'Embourg
----------------------
DéjÍ merci et bonne soirée.
Il y avait une petite erreur pour les heures moins de 10H00 comme
9h59. J'avais omis de tester cela.
Correction apportée. Voir le fichier. https://www.cjoint.com/c/KKntMzjjkoF MichD
Bonjour Denis, Presque parfait, mais en VBA pour 9h9 on a #VALEUR! quoique ce soit ok pour 09h9 ou 9h09. Juste pour envisager des saisies extrêmes ... Avec Excel 2003, bien sÍ»r. Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase, Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then H = Join(M, ":") Else If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
Le 14/11/21 Í 20:38, Jarobasearobase a écrit :
Le 13/11/2021 Í 09:42, MichD a écrit :
>
> Il y avait une petite erreur pour les heures moins de 10H00 comme
9h59. J'avais omis de tester cela.
> Correction apportée. Voir le fichier.
>
> https://www.cjoint.com/c/KKntMzjjkoF
>
> MichD
>
Bonjour Denis,
Presque parfait, mais en VBA pour 9h9 on a #VALEUR!
quoique ce soit ok pour 09h9 ou 9h09.
Juste pour envisager des saisies extrêmes ...
Avec Excel 2003, bien sͻr.
Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase,
Le demandeur devait traiter 2 types de formats :
A ) 3h ou 13h
B ) 3:25 ou 13:25
Je me suis contenté de répondre Í la demande spécifique du demandeur.
Le format que tu proposes ne m'avait pas effleuré l'esprit.
Pour répondre Í ton interrogation, modifie la fonction VBA de cette
manière :
'--------------------------------------
Function ExtraireDate(C As Range)
Dim T As String, S As Variant
Dim H As Variant, D As Date, M As Variant
T = C.Value
S = Split(T, " ")
H = Replace(S(4), "h", ":")
M = Split(H, ":")
If IsNumeric(M(0)) And IsNumeric(M(1)) Then
H = Join(M, ":")
Else
If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00"
End If
D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H)
ExtraireDate = D
End Function
'--------------------------------------
Il y avait une petite erreur pour les heures moins de 10H00 comme
9h59. J'avais omis de tester cela.
Correction apportée. Voir le fichier. https://www.cjoint.com/c/KKntMzjjkoF MichD
Bonjour Denis, Presque parfait, mais en VBA pour 9h9 on a #VALEUR! quoique ce soit ok pour 09h9 ou 9h09. Juste pour envisager des saisies extrêmes ... Avec Excel 2003, bien sÍ»r. Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase, Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then H = Join(M, ":") Else If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
MichD
Le 14/11/21 Í 22:29, MichD a écrit :
Le 14/11/21 Í 20:38, Jarobasearobase a écrit :
Le 13/11/2021 Í 09:42, MichD a écrit :  >  > Il y avait une petite erreur pour les heures moins de 10H00 comme 9h59. J'avais omis de tester cela.  > Correction apportée. Voir le fichier.  >  > https://www.cjoint.com/c/KKntMzjjkoF  >  > MichD  > Bonjour Denis, Presque parfait, mais en VBA pour 9h9 on a #VALEUR! quoique ce soit ok pour 09h9 ou 9h09. Juste pour envisager des saisies extrêmes ... Avec Excel 2003, bien sÍ»r. Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase, Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then    H = Join(M, ":") Else    If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
Le même fichier, mais avec la correction apportée et un exemple pour chacun des formats que la formule dans la feuille de calcul et la fonction VBA couvre comme format dans la chaine de caractères. https://www.cjoint.com/c/KKpdITnEOVF MichD
Le 14/11/21 Í 22:29, MichD a écrit :
Le 14/11/21 Í 20:38, Jarobasearobase a écrit :
Le 13/11/2021 Í 09:42, MichD a écrit :
 >
 > Il y avait une petite erreur pour les heures moins de 10H00 comme
9h59. J'avais omis de tester cela.
 > Correction apportée. Voir le fichier.
 >
 > https://www.cjoint.com/c/KKntMzjjkoF
 >
 > MichD
 >
Bonjour Denis,
Presque parfait, mais en VBA pour 9h9 on a #VALEUR!
quoique ce soit ok pour 09h9 ou 9h09.
Juste pour envisager des saisies extrêmes ...
Avec Excel 2003, bien sͻr.
Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase,
Le demandeur devait traiter 2 types de formats :
A ) 3h ou 13h
B ) 3:25 ou 13:25
Je me suis contenté de répondre Í la demande spécifique du demandeur.
Le format que tu proposes ne m'avait pas effleuré l'esprit.
Pour répondre Í ton interrogation, modifie la fonction VBA de cette
manière :
'--------------------------------------
Function ExtraireDate(C As Range)
Dim T As String, S As Variant
Dim H As Variant, D As Date, M As Variant
T = C.Value
S = Split(T, " ")
H = Replace(S(4), "h", ":")
M = Split(H, ":")
If IsNumeric(M(0)) And IsNumeric(M(1)) Then
   H = Join(M, ":")
Else
   If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00"
End If
D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H)
ExtraireDate = D
End Function
'--------------------------------------
MichD
Le même fichier, mais avec la correction apportée et un exemple pour
chacun des formats que la formule dans la feuille de calcul et la
fonction VBA couvre comme format dans la chaine de caractères.
Le 13/11/2021 Í 09:42, MichD a écrit :  >  > Il y avait une petite erreur pour les heures moins de 10H00 comme 9h59. J'avais omis de tester cela.  > Correction apportée. Voir le fichier.  >  > https://www.cjoint.com/c/KKntMzjjkoF  >  > MichD  > Bonjour Denis, Presque parfait, mais en VBA pour 9h9 on a #VALEUR! quoique ce soit ok pour 09h9 ou 9h09. Juste pour envisager des saisies extrêmes ... Avec Excel 2003, bien sÍ»r. Merci Denis pour ta remarquable patience.
Bonjour Jarobasearobase, Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then    H = Join(M, ":") Else    If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
Le même fichier, mais avec la correction apportée et un exemple pour chacun des formats que la formule dans la feuille de calcul et la fonction VBA couvre comme format dans la chaine de caractères. https://www.cjoint.com/c/KKpdITnEOVF MichD
Jarobasearobase
Le 14/11/2021 Í 17:36, MichD a écrit :
Le 14/11/21 Í 22:29, MichD a écrit :
Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then     H = Join(M, ":") Else     If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
Le même fichier, mais avec la correction apportée et un exemple pour chacun des formats que la formule dans la feuille de calcul et la fonction VBA couvre comme format dans la chaine de caractères. https://www.cjoint.com/c/KKpdITnEOVF MichD
Merci Denis C'est impossible de tout prévoir. Et les utilisateurs d'Excel 2003, comme moi, sont des gens étranges qui utilisent encore des ordinateurs fonctionnant au charbon et, de leurs gros doigts déglinguent souvent leurs feuilles de calcul. Merci et bonne soirée ! J@@
Le 14/11/2021 Í 17:36, MichD a écrit :
Le 14/11/21 Í 22:29, MichD a écrit :
Le demandeur devait traiter 2 types de formats :
A ) 3h ou 13h
B ) 3:25 ou 13:25
Je me suis contenté de répondre Í la demande spécifique du demandeur.
Le format que tu proposes ne m'avait pas effleuré l'esprit.
Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière :
'--------------------------------------
Function ExtraireDate(C As Range)
Dim T As String, S As Variant
Dim H As Variant, D As Date, M As Variant
T = C.Value
S = Split(T, " ")
H = Replace(S(4), "h", ":")
M = Split(H, ":")
If IsNumeric(M(0)) And IsNumeric(M(1)) Then
    H = Join(M, ":")
Else
    If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00"
End If
D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H)
ExtraireDate = D
End Function
'--------------------------------------
MichD
Le même fichier, mais avec la correction apportée et un exemple pour chacun des formats que la
formule dans la feuille de calcul et la fonction VBA couvre comme format dans la chaine de caractères.
https://www.cjoint.com/c/KKpdITnEOVF
MichD
Merci Denis
C'est impossible de tout prévoir.
Et les utilisateurs d'Excel 2003, comme moi, sont des gens étranges qui utilisent encore des
ordinateurs fonctionnant au charbon et, de leurs gros doigts déglinguent souvent leurs feuilles de
calcul.
Merci et bonne soirée !
J@@
Le demandeur devait traiter 2 types de formats : A ) 3h ou 13h B ) 3:25 ou 13:25 Je me suis contenté de répondre Í la demande spécifique du demandeur. Le format que tu proposes ne m'avait pas effleuré l'esprit. Pour répondre Í ton interrogation, modifie la fonction VBA de cette manière : '-------------------------------------- Function ExtraireDate(C As Range) Dim T As String, S As Variant Dim H As Variant, D As Date, M As Variant T = C.Value S = Split(T, " ") H = Replace(S(4), "h", ":") M = Split(H, ":") If IsNumeric(M(0)) And IsNumeric(M(1)) Then     H = Join(M, ":") Else     If Len(H) <= 3 Then H = Left(H, Len(H) - 1) & ":00" End If D = CDate(S(1) & " " & S(2) & " " & Year(Now()) & " " & H) ExtraireDate = D End Function '-------------------------------------- MichD
Le même fichier, mais avec la correction apportée et un exemple pour chacun des formats que la formule dans la feuille de calcul et la fonction VBA couvre comme format dans la chaine de caractères. https://www.cjoint.com/c/KKpdITnEOVF MichD
Merci Denis C'est impossible de tout prévoir. Et les utilisateurs d'Excel 2003, comme moi, sont des gens étranges qui utilisent encore des ordinateurs fonctionnant au charbon et, de leurs gros doigts déglinguent souvent leurs feuilles de calcul. Merci et bonne soirée ! J@@