CONSEIL / BOARD
MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la
deuxième virgule, i.e. la date en anglais.
Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date
avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch)
En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200
If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) =
Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/"))
Next i
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Je te propose ceci : Une fonction personnalisée :
Tu copies cette fonction dans un module STANDARD de ton classeur '---------------------------------------- Function Extraire_Date(D As Range) If InStr(1, D, "Conseil", vbTextCompare) > 0 Then Extraire_Date = Split(Split(D, "/")(2), ",")(0) Else Extraire_Date = "" End If End Function '----------------------------------------
Et pour accéder à cette fonction dans ta feuille de calcul, dans la cellule où tu veux obtenir le résultat, tu inscris : =Extraire_Date(A1) En supposant que A1 est la cellule qui contient ledit texte. Tu peux recopier la fonction sur une colonne si besoin.
"mireille" a écrit dans le message de groupe de discussion : Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la deuxième virgule, i.e. la date en anglais. Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200 If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) Next i
End Sub
Vraiment, mreci pour votre aide !
Je te propose ceci : Une fonction personnalisée :
Tu copies cette fonction dans un module STANDARD de ton classeur
'----------------------------------------
Function Extraire_Date(D As Range)
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then
Extraire_Date = Split(Split(D, "/")(2), ",")(0)
Else
Extraire_Date = ""
End If
End Function
'----------------------------------------
Et pour accéder à cette fonction dans ta feuille de calcul,
dans la cellule où tu veux obtenir le résultat, tu inscris :
=Extraire_Date(A1) En supposant que A1 est la cellule
qui contient ledit texte. Tu peux recopier la fonction sur
une colonne si besoin.
"mireille" <mireille@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 5B8628BF-812A-455B-9AFE-25F83BEC2096@microsoft.com...
Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD
MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la
deuxième virgule, i.e. la date en anglais.
Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date
avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch)
En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200
If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/"))
Next i
Tu copies cette fonction dans un module STANDARD de ton classeur '---------------------------------------- Function Extraire_Date(D As Range) If InStr(1, D, "Conseil", vbTextCompare) > 0 Then Extraire_Date = Split(Split(D, "/")(2), ",")(0) Else Extraire_Date = "" End If End Function '----------------------------------------
Et pour accéder à cette fonction dans ta feuille de calcul, dans la cellule où tu veux obtenir le résultat, tu inscris : =Extraire_Date(A1) En supposant que A1 est la cellule qui contient ledit texte. Tu peux recopier la fonction sur une colonne si besoin.
"mireille" a écrit dans le message de groupe de discussion : Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la deuxième virgule, i.e. la date en anglais. Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200 If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) Next i
End Sub
Vraiment, mreci pour votre aide !
MichDenis
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
Daniel.C
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
Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la deuxième virgule, i.e. la date en anglais. Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200 If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) = Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) Next i
End Sub
Vraiment, mreci pour votre aide !
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
Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD
MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la
deuxième virgule, i.e. la date en anglais.
Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date
avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch)
En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200
If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) =
Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/"))
Next i
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
Bonjour à tous !
J'utilise Excel 2003 en anglais.
J'ai dans ma cellule les infos suivantes :
CONSEIL / BOARD MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la deuxième virgule, i.e. la date en anglais. Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date avec le format d-mmm.
J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) En fait, j'y connais rien à Excel. moi, c'est SAS ...
Sub RAG()
For i = 2 To 200 If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) = Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) Next i
End Sub
Vraiment, mreci pour votre aide !
MichDenis
Pour répondre à ta demande, il en manquait un bout dans la fonction proposée...;-)) '--------------------------------------- Function LaDate(D As Range) Dim J As Integer, Mois As String Dim Arr(), M As Integer Arr = Array("January", "February", "Mars", "April", "Mai", "June" _ , "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1) Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2) M = Application.Match(Mois, Arr, 0) LaDate = Format(DateSerial(2009, M, J), "d-mmm") Else LaDate = "" End If End Function '---------------------------------------
"MichDenis" a écrit dans le message de groupe de discussion :
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
Pour répondre à ta demande, il en manquait un bout dans la fonction proposée...;-))
'---------------------------------------
Function LaDate(D As Range)
Dim J As Integer, Mois As String
Dim Arr(), M As Integer
Arr = Array("January", "February", "Mars", "April", "Mai", "June" _
, "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then
J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1)
Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2)
M = Application.Match(Mois, Arr, 0)
LaDate = Format(DateSerial(2009, M, J), "d-mmm")
Else
LaDate = ""
End If
End Function
'---------------------------------------
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
05DCA5D4-DEA1-4814-A8F3-128762B915F1@microsoft.com...
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
Pour répondre à ta demande, il en manquait un bout dans la fonction proposée...;-)) '--------------------------------------- Function LaDate(D As Range) Dim J As Integer, Mois As String Dim Arr(), M As Integer Arr = Array("January", "February", "Mars", "April", "Mai", "June" _ , "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1) Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2) M = Application.Match(Mois, Arr, 0) LaDate = Format(DateSerial(2009, M, J), "d-mmm") Else LaDate = "" End If End Function '---------------------------------------
"MichDenis" a écrit dans le message de groupe de discussion :
J'oubliais, la fonction Split requiert excel 2000 ou plus récent.
mireille
Merci beaucoup ! J'ai utilisé votre macro. Et j'ai même réussi à la modifier pour lire toutes les cellules de la colonne A et écrire le résultat dans une autre colonne !
Je n'ai pas utilisé la solution de MichDenis parce que je ne sais pas appeler une fonction dans une procédure ...
Merci encore à vous deux.
"Daniel.C" a écrit :
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
> Bonjour à tous ! > > J'utilise Excel 2003 en anglais. > > J'ai dans ma cellule les infos suivantes : > > CONSEIL / BOARD > MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am > > Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la > deuxième virgule, i.e. la date en anglais. > Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date > avec le format d-mmm. > > J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) > En fait, j'y connais rien à Excel. moi, c'est SAS ... > > Sub RAG() > > For i = 2 To 200 > If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) = > Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) > Next i > > End Sub > > Vraiment, mreci pour votre aide !
Merci beaucoup !
J'ai utilisé votre macro. Et j'ai même réussi à la modifier pour lire toutes
les cellules de la colonne A et écrire le résultat dans une autre colonne !
Je n'ai pas utilisé la solution de MichDenis parce que je ne sais pas
appeler une fonction dans une procédure ...
Merci encore à vous deux.
"Daniel.C" a écrit :
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
> Bonjour à tous !
>
> J'utilise Excel 2003 en anglais.
>
> J'ai dans ma cellule les infos suivantes :
>
> CONSEIL / BOARD
> MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am
>
> Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la
> deuxième virgule, i.e. la date en anglais.
> Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date
> avec le format d-mmm.
>
> J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch)
> En fait, j'y connais rien à Excel. moi, c'est SAS ...
>
> Sub RAG()
>
> For i = 2 To 200
> If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) =
> Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/"))
> Next i
>
> End Sub
>
> Vraiment, mreci pour votre aide !
Merci beaucoup ! J'ai utilisé votre macro. Et j'ai même réussi à la modifier pour lire toutes les cellules de la colonne A et écrire le résultat dans une autre colonne !
Je n'ai pas utilisé la solution de MichDenis parce que je ne sais pas appeler une fonction dans une procédure ...
Merci encore à vous deux.
"Daniel.C" a écrit :
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
> Bonjour à tous ! > > J'utilise Excel 2003 en anglais. > > J'ai dans ma cellule les infos suivantes : > > CONSEIL / BOARD > MERCREDI 4 FEVRIER 2009, 9h00 / WEDNESDAY 4 FEBRUARY 2009, 9:00 am > > Je veux créer une macro qui m'extrait le texte entre le 2ème slash et la > deuxième virgule, i.e. la date en anglais. > Ensuite, je veux transformer le texte "WEDNESDAY 4 FEBRUARY 2009" en date > avec le format d-mmm. > > J'ai écrit le code suivant, mais ça bugue (Run-time Error "13" Type Mismatch) > En fait, j'y connais rien à Excel. moi, c'est SAS ... > > Sub RAG() > > For i = 2 To 200 > If (Left(Cells(i, 1), 7)) = "CONSEIL" Then Cells(i, 9) = > Left(StrReverse(Cells(i, 1)), InStr(StrReverse(Cells(i, 1)) - 1, "/")) > Next i > > End Sub > > Vraiment, mreci pour votre aide !
MichDenis
Pour appeler ma fonction dans une procédure A ) Place la fonction dans un module standard
B ) Un petit exemple : '-------------------------- Dim C As range For each C in Range("A1:A10") C.value = LaDate(c) Next '--------------------------
C ) Mais tu peux utiliser la fonction directement dans une cellule tu n'as qu'à écrire : = LaDate("A1") si A1 contient la chaîne de caractère et tu peux recopier la formule sur l'étendue de la colonne si besoin. Tu n'a pas besoin de macro.
'--------------------------------- Function LaDate(D As Range) Dim J As Integer, Mois As String Dim Arr(), M As Integer Arr = Array("January", "February", "Mars", "April", "Mai", "June" _ , "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1) Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2) M = Application.Match(Mois, Arr, 0) LaDate = Format(DateSerial(2009, M, J), "d-mmm") Else LaDate = "" End If End Function '---------------------
Pour appeler ma fonction dans une procédure
A ) Place la fonction dans un module standard
B ) Un petit exemple :
'--------------------------
Dim C As range
For each C in Range("A1:A10")
C.value = LaDate(c)
Next
'--------------------------
C ) Mais tu peux utiliser la fonction directement dans une cellule
tu n'as qu'à écrire : = LaDate("A1") si A1 contient la chaîne de caractère
et tu peux recopier la formule sur l'étendue de la colonne si besoin. Tu
n'a pas besoin de macro.
'---------------------------------
Function LaDate(D As Range)
Dim J As Integer, Mois As String
Dim Arr(), M As Integer
Arr = Array("January", "February", "Mars", "April", "Mai", "June" _
, "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then
J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1)
Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2)
M = Application.Match(Mois, Arr, 0)
LaDate = Format(DateSerial(2009, M, J), "d-mmm")
Else
LaDate = ""
End If
End Function
'---------------------
Pour appeler ma fonction dans une procédure A ) Place la fonction dans un module standard
B ) Un petit exemple : '-------------------------- Dim C As range For each C in Range("A1:A10") C.value = LaDate(c) Next '--------------------------
C ) Mais tu peux utiliser la fonction directement dans une cellule tu n'as qu'à écrire : = LaDate("A1") si A1 contient la chaîne de caractère et tu peux recopier la formule sur l'étendue de la colonne si besoin. Tu n'a pas besoin de macro.
'--------------------------------- Function LaDate(D As Range) Dim J As Integer, Mois As String Dim Arr(), M As Integer Arr = Array("January", "February", "Mars", "April", "Mai", "June" _ , "July", "August", "September", "October", "November", "December")
If InStr(1, D, "Conseil", vbTextCompare) > 0 Then J = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(1) Mois = Split(Trim(Split(Split(D, "/")(2), ",")(0)), " ")(2) M = Application.Match(Mois, Arr, 0) LaDate = Format(DateSerial(2009, M, J), "d-mmm") Else LaDate = "" End If End Function '---------------------