OVH Cloud OVH Cloud

Formule pour extraire le mois et l'année d'un format date non reconnu

10 réponses
Avatar
gmore
Bonjour,

j'ai un document qui contient un format de date non valid=E9=20
par Excel :

Exemple : Fri 31 Oct 2003

Je veux simplement obtenir, selon un mois donn=E9, un nombre=20
dans une autre cellule pour continuer mon projet qui=20
correspond au mois.

Exemple : Fri 31 Oct 2003 Mois=3D10 Ann=E9e=3D2003
Wed 5 Feb 2003 Mois=3D2 Ann=E9e=3D2003

Je suis en mesure d'utiliser la fonction CHERCHE comme=20
suit : =3DSI(CHERCHE("Jan",J2),"01","rien")

Si vous avez une meilleur id=E9e, elle est tr=E8s bienvenue.

Merci!
gmore=20

10 réponses

Avatar
Nicolas B.
Salut gmore,

Voici une formule qui devrait fonctionner (attention aux retours à la ligne)
:
=SOMMEPROD(NON(ESTERREUR(CHERCHE({"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";
"Aug";"Sep";"Oct";"Nov";"Dec"};A1)))*{1;2;3;4;5;6;7;8;9;10;11;12})


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


gmore wrote:
Bonjour,

j'ai un document qui contient un format de date non validé
par Excel :

Exemple : Fri 31 Oct 2003

Je veux simplement obtenir, selon un mois donné, un nombre
dans une autre cellule pour continuer mon projet qui
correspond au mois.

Exemple : Fri 31 Oct 2003 Mois Année 03
Wed 5 Feb 2003 Mois=2 Année 03

Je suis en mesure d'utiliser la fonction CHERCHE comme
suit : =SI(CHERCHE("Jan",J2),"01","rien")

Si vous avez une meilleur idée, elle est très bienvenue.

Merci!
gmore


Avatar
FxM
Bonsoir,

Sous forme de fonction perso matricielle horizontale (hein, qu'est-ce
qu'y dit ? ;o))

Alt-F11 | insertion | module, copies-y ce qui suit :

Function moa2(inp)
Application.Volatile
Dim arr(2), arr2(1)
inp = StrReverse(inp): arr(1) = CDbl(StrReverse(Left(inp, 5)))
inp = Right(inp, Len(inp) - 5)
arr(0) = StrReverse(Left(inp, InStr(1, inp, " ") - 1))
Select Case UCase(arr(0))
Case "JAN": arr(0) = 1
Case "FEV", "FEB": arr(0) = 2
Case "MAR": arr(0) = 3
Case "AVR", "APR": arr(0) = 4
Case "MAI", "MAY": arr(0) = 5
Case "JUN": arr(0) = 6
Case "JUL": arr(0) = 7
Case "AOU", "AUG": arr(0) = 8
Case "SEP": arr(0) = 9
Case "OCT": arr(0) = 10
Case "NOV": arr(0) = 11
Case "DEC": arr(0) = 12
End Select
moa2 = arr
End Function

Usage :
avec ton
Avec Fri 31 Oct 2003 en A1, sélectionne B1:C1. En guise de formule,
tapes =moa2(A1) et valide en matriciel (par ctrl-maj-enter)
Tu obtiens 10 en B1 et 2003 en C1

Avec Wed 5 Feb 2003 en A2, sélectionne B2:C2. =moa2(A2) te renvoit 2
en B2 et 2003 en C2.

@+
FxM


gmore a écrit:

Bonjour,

j'ai un document qui contient un format de date non validé
par Excel :

Exemple : Fri 31 Oct 2003

Je veux simplement obtenir, selon un mois donné, un nombre
dans une autre cellule pour continuer mon projet qui
correspond au mois.

Exemple : Fri 31 Oct 2003 Mois Année 03
Wed 5 Feb 2003 Mois=2 Année 03

Je suis en mesure d'utiliser la fonction CHERCHE comme
suit : =SI(CHERCHE("Jan",J2),"01","rien")

Si vous avez une meilleur idée, elle est très bienvenue.

Merci!
gmore




Avatar
Jean-François Aubert
Et encore une autre fonction perso:

Function trad(cell As Range)
InEnglish = cell
jj = Right(InEnglish, Len(InEnglish) - 4)
j = Left(jj, Len(jj) - 9)
a = Right(InEnglish, 4)
mois = Left(Right(InEnglish, 8), 3)
Select Case mois
Case "Jan": m = 1
Case "Feb": m = 2
Case "Mar": m = 3
Case "Apr": m = 4
Case "May": m = 5
Case "Jun": m = 6
Case "Jul": m = 7
Case "Aug": m = 8
Case "Sep": m = 9
Case "Oct": m = 10
Case "Nov": m = 11
Case "Dec": m = 12
End Select
trad = CDate(j & "." & m & "." & a)
End Function 'ajf

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"gmore" a écrit dans le message de news:4a0101c3a24c$1b2cc940$
Bonjour,

j'ai un document qui contient un format de date non validé
par Excel :

Exemple : Fri 31 Oct 2003

Je veux simplement obtenir, selon un mois donné, un nombre
dans une autre cellule pour continuer mon projet qui
correspond au mois.

Exemple : Fri 31 Oct 2003 Mois Année 03
Wed 5 Feb 2003 Mois=2 Année 03

Je suis en mesure d'utiliser la fonction CHERCHE comme
suit : =SI(CHERCHE("Jan",J2),"01","rien")

Si vous avez une meilleur idée, elle est très bienvenue.

Merci!
gmore
Avatar
Jean-François Aubert
Et selon un judicieux conseil, que naguère, Daniel.M m'avait prodigué:

pour rendre le code compatible avec les différents systèmes de
représentation des dates, ( la date retournée, mais non pas la date à traiter ! )

remplace la ligne de code:
trad = CDate(j & "." & m & "." & a)


par :
trad = DateSerial(a, m, j)
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Jean-François Aubert" <à a écrit dans le message de
news:
Et encore une autre fonction perso:

Function trad(cell As Range)
InEnglish = cell
jj = Right(InEnglish, Len(InEnglish) - 4)
j = Left(jj, Len(jj) - 9)
a = Right(InEnglish, 4)
mois = Left(Right(InEnglish, 8), 3)
Select Case mois
Case "Jan": m = 1
Case "Feb": m = 2
Case "Mar": m = 3
Case "Apr": m = 4
Case "May": m = 5
Case "Jun": m = 6
Case "Jul": m = 7
Case "Aug": m = 8
Case "Sep": m = 9
Case "Oct": m = 10
Case "Nov": m = 11
Case "Dec": m = 12
End Select
trad = CDate(j & "." & m & "." & a)
End Function 'ajf


Avatar
AV
Dans le même style

Le mois :
=EQUIV(GAUCHE(DROITE(A1;8);3);{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"
Sep";"Oct";"Nov";"Dec"};0)

AV
Avatar
gmore
Nicolas,

j'essaie la formule, mais j'ai une erreur qui dit que la
formule n'est pas valide. Je vois que c'est une formule
matricielle et je fais Ctrl+Maj+Entree, mais ça ne change
rien.

Je dois etre "dans les patates" car j'essaie celle d'Alain
et ca ne marche pas non plus.

......
Avatar
Philippe.R
Bonsoir,
Sommeprod ne nécessite pas la saisie mode matriciel ; en revanche la formule donnée suppose que le
contenu de la cellule soit un texte.
Qu'as tu affiché dans la barre de formule, quand tu sélectionnes une cellule de ce type ?
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"gmore" a écrit dans le message de
news:04a501c3a31a$19335ea0$
Nicolas,

j'essaie la formule, mais j'ai une erreur qui dit que la
formule n'est pas valide. Je vois que c'est une formule
matricielle et je fais Ctrl+Maj+Entree, mais ça ne change
rien.

Je dois etre "dans les patates" car j'essaie celle d'Alain
et ca ne marche pas non plus.

......
Avatar
gmore
Bonjour Alain,

il y a quelque chose que je ne fais pas correctement, car
ça ne fonctionne pas. Quand je vois qu'il y a des
accolades, je sais que c'est une formule matricielle et
même si je fais Ctrl+Maj+Entrée, Excel donne une erreur.

gmore
-----Message d'origine-----
Dans le même style

Le mois :
=EQUIV(GAUCHE(DROITE(A1;8);3);
{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"

Sep";"Oct";"Nov";"Dec"};0)

AV


Avatar
AV
il y a quelque chose que je ne fais pas correctement, car
ça ne fonctionne pas. Quand je vois qu'il y a des
accolades, je sais que c'est une formule matricielle et
même si je fais Ctrl+Maj+Entrée, Excel donne une erreur.


Ce n'est pas une formule matricielle mais une formule contenant une matrice de
constantes {"Jan";"Feb";"Mar";"Apr";"... que l'on place entre accolades
(saisies au clavier !)
Il faut donc valider normalement, mais la validation matricielle ne devrait
quand même pas générer une erreur

AV

Avatar
Jack
Merci 1000 fois pour ce petit bout de formule qui me
débloque enfin mon travail.

-----Message d'origine-----
Salut gmore,

Voici une formule qui devrait fonctionner (attention aux
retours à la ligne)

:
=SOMMEPROD(NON(ESTERREUR(CHERCHE
({"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";

"Aug";"Sep";"Oct";"Nov";"Dec"};A1)))*
{1;2;3;4;5;6;7;8;9;10;11;12})



A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC