OVH Cloud OVH Cloud

Extraction

13 réponses
Avatar
Jacquouille
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.

3 réponses

1 2
Avatar
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
'--------------------------------------
MichD
Avatar
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
Avatar
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@@
1 2