Chercher une partie de mot

panda

XLDnaute Occasionnel
Bonjour à tous
Je sais que vous trouverez la solution plus rapidement que moi :
Dans la colonne A je peux avoir :

www janvier lllll
xxxx février pp
mars iiiii
jjjj avril hhh
oo mars bbbb

--> Bref, du texte contenant entre autre un mois. Ma question est simple: Comment récupérer uniquement le mois dans chaque cellule en face ?

Merci pour votre aide.
Bonne journée
 

Pierrot93

XLDnaute Barbatruc
Re : Chercher une partie de mot

Bonjour Panda,

En attendant les formulistes, une solution vba, il faut que l'accentuation des mois soit respectée...

Code:
Sub test()
Dim c As Range, x As Range, i As Byte
For Each c In Sheets("Feuil1").Range("G1:G5")
    For i = 1 To 12
        Set x = c.Find(MonthName(i), , xlValues, xlPart, , , False)
        If Not x Is Nothing Then
            c.Offset(0, 1).Value = MonthName(i)
            Exit For
        End If
    Next i
Next c
End Sub

bonne journée
@+
 

Guiv

XLDnaute Occasionnel
Re : Chercher une partie de mot

Bonjour panda, pierrot, le forum,
Une formule un peu indigeste mais qui donne le résultat attendu (sensible à la casse et aux accentuations)
Code:
=SUPPRESPACE(SI(ESTERREUR(TROUVE("janvier";A1));"";"janvier")& " " &SI(ESTERREUR(TROUVE("février";A1));"";"février")& " " &SI(ESTERREUR(TROUVE("mars";A1));"";"mars")& " " &SI(ESTERREUR(TROUVE("avril";A1));"";"avril")& " " &SI(ESTERREUR(TROUVE("mai";A1));"";"mai")& " " &SI(ESTERREUR(TROUVE("juin";A1));"";"juin")& " " &SI(ESTERREUR(TROUVE("juillet";A1));"";"juillet")& " " &SI(ESTERREUR(TROUVE("août";A1));"";"août")& " " &SI(ESTERREUR(TROUVE("septembre";A1));"";"septembre")& " " &SI(ESTERREUR(TROUVE("octobre";A1));"";"octobre")& " " &SI(ESTERREUR(TROUVE("novembre";A1));"";"novembre")& " " &SI(ESTERREUR(TROUVE("décembre";A1));"";"décembre"))

si données en A1
Il y a sans doute plus élégant!
Cordialement,
Guiv
 

Tibo

XLDnaute Barbatruc
Re : Chercher une partie de mot

Bonjour,

Avec ton texte en A1 (et suivantes) :

Une formule matricielle en B1 :

Code:
=SI(SOMME((ESTNUM(TROUVE(TEXTE(LIGNE($1:$12)*30;"mmmm");A1)))*1);INDEX(TEXTE(
LIGNE($1:$12)*30;"mmmm");EQUIV(VRAI;ESTNUM(TROUVE(TEXTE(LIGNE($1:$12)*30;"mmmm");
A1));0));"")

Formule matricielle à valider par CTRL + MAJ + ENTREE

à recopier vers le bas

nécessite un respect scrupuleux de l'orthographe des mois.

@+
 

Guiv

XLDnaute Occasionnel
Re : Chercher une partie de mot

Re,
Code:
=SI(SOMME((ESTNUM(TROUVE(TEXTE(LIGNE($1:$12)*30;"mmmm");A1)))*1);INDEX(TEXTE(
LIGNE($1:$12)*30;"mmmm");EQUIV(VRAI;ESTNUM(TROUVE(TEXTE(LIGNE($1:$12)*30;"mmmm");
A1));0));"")

Bravo, j'ai rien compris mais ça fonctionne! (sensible à la casse également, et ne trouve que le premier mois inclus dans la chaîne). Où va-t-il chercher tout ça , le Tibo :rolleyes:

Cordialement,
Guiv
 

Tibo

XLDnaute Barbatruc
Re : Chercher une partie de mot

Salut Guiv,

Petite tentative d'explication.

Pour Excel, 1 correspond au 1er janvier 1900

La formule :

Code:
=LIGNE($1:$12)*30

retourne une matrice des nombres : 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330 et 360

nombres qui correspondent aux : 30 janvier, 29 février, 30 mars, 29 avril, 29 mai, 28 juin, 28 juillet, 27 août, 26 septembre, 26 octobre, 25 novembre et 25 décembre de l'année 1900

La formule :

Code:
=TEXTE(LIGNE($1:$12)*30;"mmmm")

retourne donc une matrice des mois (en texte) de janvier à décembre

Il ne reste alors plus qu'à tester si un des mois est présent dans la chaîne à tester.

Voilou pour une tentative de début d'explication.

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 369
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang