extraire un bout de texte et le transformer en date

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #19016511
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" 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


MichDenis
Le #19017481
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" 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
Daniel.C
Le #19017471
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


mireille
Le #19019921
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" 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





mireille
Le #19023971
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





Publicité
Poster une réponse
Anonyme