Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire un bout de texte et le transformer en date

5 réponses
Avatar
mireille
Bonsoir,

J'ai déjà posé la question, mais je ne peux plus accéder au message.

Donc, j'ai une date sous la forme 1 :
CAHR COMMITTEE / COMITE CAHR
MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
ou 2 :
CODE AUFI COMMITTEE / COMITE CODE AUFI
THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
ou bien 3 :
JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00

Je dois extraire la date en anglais et la transfomer en format date.

J'utilise le programme suivant (très largement inspiré de la personne qui
m'a aidé la dernière fois !)

deb = InStrRev(Cells(i, 1), ("/"))
txt = Mid(Cells(i, 1), 1, deb - 2)
deb = InStrRev(txt, ("/"))
heure = InStrRev(txt, (","))
txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
deb = InStr(LTrim(txt), (" "))
txt = LTrim(Mid(LTrim(txt), deb))
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
Mois = Application.Match(LCase(Tabl(1)), An, 0)
datemeet = DateSerial(Tabl(2), Mois, Tabl(0))

ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
extraire la date en anglais.

Merci beaucoup pour votre aide,
Mireille

5 réponses

Avatar
Jacquouille
Bonsoir
Ces dates sont dans une seule cellule, ou bien plusieurs?
Si c'est possible, regarder en changeant le format de la cellule et vous
obtiendrez un nombre du style 38582 ou 38582,25
Que vous pourriez reprendre, recopier et retransformer en date, qu'elle soit
en Gaulois ou en Grand Breton.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"mireille" a écrit dans le message de
news:
Bonsoir,

J'ai déjà posé la question, mais je ne peux plus accéder au message.

Donc, j'ai une date sous la forme 1 :
CAHR COMMITTEE / COMITE CAHR
MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
ou 2 :
CODE AUFI COMMITTEE / COMITE CODE AUFI
THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
ou bien 3 :
JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00

Je dois extraire la date en anglais et la transfomer en format date.

J'utilise le programme suivant (très largement inspiré de la personne qui
m'a aidé la dernière fois !)

deb = InStrRev(Cells(i, 1), ("/"))
txt = Mid(Cells(i, 1), 1, deb - 2)
deb = InStrRev(txt, ("/"))
heure = InStrRev(txt, (","))
txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
deb = InStr(LTrim(txt), (" "))
txt = LTrim(Mid(LTrim(txt), deb))
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
Mois = Application.Match(LCase(Tabl(1)), An, 0)
datemeet = DateSerial(Tabl(2), Mois, Tabl(0))

ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
extraire la date en anglais.

Merci beaucoup pour votre aide,
Mireille


Avatar
MichDenis
tu peux essayer ceci :

Dans un module standard, tu copies la fonction suivante :
'---------------------------------------------
Function Modifier_date(Rg As Range)
Dim Arr(), X As String, T As String, M As String

Arr = Array("January", "February", "March", "April", _
"Mai", "June", "July", "August", "September", _
"October", "November", "December")

X = Application.Clean(Rg)
X = Replace(X, " ", " ")
For a = 1 To 3
T = T & Split(X, " ")(a) & " "
Next
T = Left(T, Len(T) - 2)
M = Split(T, " ")(1)
T = Split(T, " ")(0) & "/" & _
Application.Match(M, Arr, 0) & "/" & _
Split(T, " ")(2)

Modifier_date = CDate(T) + CDate(Split(X, " ")(4))

End Function
'---------------------------------------------

Et dans une cellule, tu inscris ceci :
=modifier_date(A1) en supposant que la date que tu veux
modifier est en A1 . tu dois utiliser ce format de cellules
pour les cellules contenant la fonction : jjjj j mmmm aaaa"," h"h"mm




"mireille" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai déjà posé la question, mais je ne peux plus accéder au message.

Donc, j'ai une date sous la forme 1 :
CAHR COMMITTEE / COMITE CAHR
MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
ou 2 :
CODE AUFI COMMITTEE / COMITE CODE AUFI
THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
ou bien 3 :
JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00

Je dois extraire la date en anglais et la transfomer en format date.

J'utilise le programme suivant (très largement inspiré de la personne qui
m'a aidé la dernière fois !)

deb = InStrRev(Cells(i, 1), ("/"))
txt = Mid(Cells(i, 1), 1, deb - 2)
deb = InStrRev(txt, ("/"))
heure = InStrRev(txt, (","))
txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
deb = InStr(LTrim(txt), (" "))
txt = LTrim(Mid(LTrim(txt), deb))
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
Mois = Application.Match(LCase(Tabl(1)), An, 0)
datemeet = DateSerial(Tabl(2), Mois, Tabl(0))

ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
extraire la date en anglais.

Merci beaucoup pour votre aide,
Mireille
Avatar
Daniel.C
Bonsoir.
Je reposte donc ma réponse :

Bonjour.
La macro suivante lit la cellule active et écrit le résultat en A1 :

Sub test()
Dim deb, heure, txt As String, Tabl, An
An = Array("january", "february", "march", "april", "may", _
"june", "july", "august", "september", _
"october", "november", "december")
deb = InStrRev(ActiveCell, ("/"))
heure = InStrRev(ActiveCell, (","))
txt = Mid(Selection, deb + 2, heure - deb - 2)
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
mois = Application.Match(LCase(Tabl(1)), An, 0)
[A1] = DateSerial(Tabl(2), mois, Tabl(0))
[A1].NumberFormat = "d-mmm"
End Sub

Daniel

Bonsoir,

J'ai déjà posé la question, mais je ne peux plus accéder au message.

Donc, j'ai une date sous la forme 1 :
CAHR COMMITTEE / COMITE CAHR
MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
ou 2 :
CODE AUFI COMMITTEE / COMITE CODE AUFI
THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
ou bien 3 :
JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00

Je dois extraire la date en anglais et la transfomer en format date.

J'utilise le programme suivant (très largement inspiré de la personne qui
m'a aidé la dernière fois !)

deb = InStrRev(Cells(i, 1), ("/"))
txt = Mid(Cells(i, 1), 1, deb - 2)
deb = InStrRev(txt, ("/"))
heure = InStrRev(txt, (","))
txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
deb = InStr(LTrim(txt), (" "))
txt = LTrim(Mid(LTrim(txt), deb))
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
Mois = Application.Match(LCase(Tabl(1)), An, 0)
datemeet = DateSerial(Tabl(2), Mois, Tabl(0))

ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
extraire la date en anglais.

Merci beaucoup pour votre aide,
Mireille


Avatar
mireille
Bonjour,
Tout est mélangé dans une seule cellule avec un retour chariot. J'ai :
<meeting> / <réunion> (retour chariot)
<date and time> / <date et heure>

Et le pb, c'est que <meeting> et <réunion> sont écrits n'importe comment ...

J'ai essayé de changer le format de la cellule. Ca ne marche pas, le teste
reste en texte ...

"Jacquouille" a écrit :

Bonsoir
Ces dates sont dans une seule cellule, ou bien plusieurs?
Si c'est possible, regarder en changeant le format de la cellule et vous
obtiendrez un nombre du style 38582 ou 38582,25
Que vous pourriez reprendre, recopier et retransformer en date, qu'elle soit
en Gaulois ou en Grand Breton.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"mireille" a écrit dans le message de
news:
> Bonsoir,
>
> J'ai déjà posé la question, mais je ne peux plus accéder au message.
>
> Donc, j'ai une date sous la forme 1 :
> CAHR COMMITTEE / COMITE CAHR
> MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
> ou 2 :
> CODE AUFI COMMITTEE / COMITE CODE AUFI
> THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
> ou bien 3 :
> JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
> THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00
>
> Je dois extraire la date en anglais et la transfomer en format date.
>
> J'utilise le programme suivant (très largement inspiré de la personne qui
> m'a aidé la dernière fois !)
>
> deb = InStrRev(Cells(i, 1), ("/"))
> txt = Mid(Cells(i, 1), 1, deb - 2)
> deb = InStrRev(txt, ("/"))
> heure = InStrRev(txt, (","))
> txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
> deb = InStr(LTrim(txt), (" "))
> txt = LTrim(Mid(LTrim(txt), deb))
> txt = Right(txt, Len(txt) - InStr(txt, " "))
> Tabl = Split(txt, " ")
> Mois = Application.Match(LCase(Tabl(1)), An, 0)
> datemeet = DateSerial(Tabl(2), Mois, Tabl(0))
>
> ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
> nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
> plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
> extraire la date en anglais.
>
> Merci beaucoup pour votre aide,
> Mireille





Avatar
mireille
J'ai utilisé IsNumeric(Split(txt, " ")(k)) = True en faisant une boucle sur k
qui me permet de trouver le 1er chiffre (qui est toujours le jour). A partir
de là, j'extrais la date que je transforme en forma date.

Merci à vous trois !

"Daniel.C" a écrit :

Bonsoir.
Je reposte donc ma réponse :

Bonjour.
La macro suivante lit la cellule active et écrit le résultat en A1 :

Sub test()
Dim deb, heure, txt As String, Tabl, An
An = Array("january", "february", "march", "april", "may", _
"june", "july", "august", "september", _
"october", "november", "december")
deb = InStrRev(ActiveCell, ("/"))
heure = InStrRev(ActiveCell, (","))
txt = Mid(Selection, deb + 2, heure - deb - 2)
txt = Right(txt, Len(txt) - InStr(txt, " "))
Tabl = Split(txt, " ")
mois = Application.Match(LCase(Tabl(1)), An, 0)
[A1] = DateSerial(Tabl(2), mois, Tabl(0))
[A1].NumberFormat = "d-mmm"
End Sub

Daniel

> Bonsoir,
>
> J'ai déjà posé la question, mais je ne peux plus accéder au message.
>
> Donc, j'ai une date sous la forme 1 :
> CAHR COMMITTEE / COMITE CAHR
> MONDAY 29 JUNE 2009, 9:30 am / LUNDI 29 JUIN 2009, 9h30
> ou 2 :
> CODE AUFI COMMITTEE / COMITE CODE AUFI
> THURSDAY 25 JUNE 2009, 9:30 am / JEUDI 25 JUIN 2009, 9h30
> ou bien 3 :
> JOINT AMBD - ETHICS COMMITTEE / COMITE CONJOINTE AMBD - D'ETHIQUE
> THURSDAY 23 APRIL 2009, 3:00 pm / JEUDI 23 AVRIL 2009, 3h00
>
> Je dois extraire la date en anglais et la transfomer en format date.
>
> J'utilise le programme suivant (très largement inspiré de la personne qui
> m'a aidé la dernière fois !)
>
> deb = InStrRev(Cells(i, 1), ("/"))
> txt = Mid(Cells(i, 1), 1, deb - 2)
> deb = InStrRev(txt, ("/"))
> heure = InStrRev(txt, (","))
> txt = LTrim(Mid(LTrim(txt), deb + 2, heure - deb - 2))
> deb = InStr(LTrim(txt), (" "))
> txt = LTrim(Mid(LTrim(txt), deb))
> txt = Right(txt, Len(txt) - InStr(txt, " "))
> Tabl = Split(txt, " ")
> Mois = Application.Match(LCase(Tabl(1)), An, 0)
> datemeet = DateSerial(Tabl(2), Mois, Tabl(0))
>
> ca marche avec la forme1. Mais comme l'utilisateur ne cesse d'inventer de
> nouveaux noms avec plein d'espaces, et qu'un jour il finira par rajouter
> plein de caractère du style ({@ ou autre, je voudrai une macro qui puisse
> extraire la date en anglais.
>
> Merci beaucoup pour votre aide,
> Mireille