Extraire une chaine de caractere

Bonjour,

J'aimerai soumettre a votre sagacité et à mon plus grand bonheur le problème suivant:

je télécharge des écritures de ma banque préférée, mais celles ci a l' outrecuidance de modifier par un un numéro ou une chaîne de lettres ses libellés.

Existe il un moyen d'extraire une chaîne de caractères commune à mes libellés:

Ex:

PRLV SEPA CIC BANQUE CBSDD23000000000000154057 92112

PRLV SEPA CIC BANQUE CBSDD23000000000000154058 5292111

Je voudrai extraire seulement CIC

Ex

PRLV SEPA EDF CLIENTS PARTICULI Z012275978124 11406 1 SIMM 114 NUMERO DE CLIENT : 50091- NUMERO DE COMPTE : XXX kjkiooooooo

PRLV SEPA EDF CLIENTS PARTICULI Z013816433291 11406 1 SIMM 114 NUMERO DE CLIENT : 50091 NUMERO DE COMPTE : XXX kjkiooooooo

PRLV SEPA EDF CLIENTS PARTICULI Z014608927650 11406 1 SIMM 114 NUMERO DE CLIENT : 50091 NUMERO DE COMPTE : XXX kjkiooooooo

PRLV SEPA EDF CLIENTS PARTICULI Z015549243953 11406 1 SIMM 114 NUMERO DE CLIENT : 50091 NUMERO DE COMPTE : XXXkjkiooooooo

PRLV SEPA EDF CLIENTS PARTICULI Z017141327639 11406 1 SIMM 114 NUMERO DE CLIENT : 50091 NUMERO DE COMPTE : XXXkjkiooooooo

Je voudrais ici extraire EDF

Bien sûr pour corser la difficulté je maîtrise mal VBA (en vérité pas du tout ) j'ai bien essayé avec les fonctions gauche droite mais sans succès

Je ne vous remercie de m’éclairer sur une solution si vous en voyer une

très cordialement,

didier

Bonjour le forum,

doz a écrit :

Ex:

PRLV SEPA CIC BANQUE CBSDD23000000000000154057 92112

PRLV SEPA CIC BANQUE CBSDD23000000000000154058 5292111

Je voudrai extraire seulement CIC

=STXT(A1;CHERCHE("CIC";A1;1);3)

Ou ???

=STXT(A1;CHERCHE("CIC";A1;1);50)

Bonjour doz, bonjour le forum,

Si ta liste se trouve en colonne A de l'onglet Feuil1 essaie le code ci-dessous ou adapte-le à ton cas :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (a adapter a ton cas)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs NL
ReDim TL(1 To NL) 'redimensionne le tableau de lignes TL
For I = 1 To NL 'boucle sur toutes les lignes I du tableau de valeurs TV
    TL(I) = Split(TV(I, 1), " ")(2) 'recupère dans TL le texte après le secon espace de la donnée ligne I colonne 1
Next I 'prochaine ligne de la boucle
O.Range("M1").Resize(UBound(TL), 1) = Application.Transpose(TL) 'renvoie dans M1 redimensionnée(tu adapteras) le tableau TL transposé
End Sub

On peut aussi utiliser les expressions régulières ...

28prlv-sepa.xlsm (15.56 Ko)

Bonjour le Fil,

Autre proposition :

=STXT(SUBSTITUE(A1;"PRLV SEPA ";"");1;TROUVE(" ";SUBSTITUE(A1;"PRLV SEPA ";""))-1)

Avec A1 : Texte à retraiter

Bonjour à tous... !

Je vais proposer une fonction...

Function EXTRACPRLV(prlv As String) As String
    Application.Volatile
    EXTRACPRLV = Split(prlv)(2)
End Function

Cordialement.

doz a écrit :

Je voudrai extraire seulement CIC

Je voudrais ici extraire EDF

1 seule formule pour la recherche de ces deux mots :

=SIERREUR(STXT(A1;CHERCHE("CIC";A1;1);3);STXT(A1;CHERCHE("EDF";A1;1);3))

bonjour

sur le fichier de steelson pour les nuls en VBA

17doz.xlsm (16.16 Ko)

cordialement

ou alors

17doz.xlsm (16.16 Ko)
28doz-2.xlsm (16.92 Ko)

Une recherche pour quatre mots :

=SIERREUR(SIERREUR(SIERREUR(STXT(A1;CHERCHE("CIC";A1;1);3);STXT(A1;CHERCHE("EDF";A1;1);3));SIERREUR(STXT(A1;CHERCHE("BNP";A1;1);3);STXT(A1;CHERCHE("ORANGE";A1;1);6)));"***")
tulipe_4 a écrit :

bonjour

sur le fichier de steelson pour les nuls en VBA

Très drôle !

Néanmoins je réfère les formules ci-dessus (pas que la mienne, je ne suis pas chauvin) qui cherchent un texte qui n'est pas donné a priori, c'est-à-dire un texte qui suit PRLV SEPA et précède unblanc suivant ....

Salut Steelson !

Steelson a écrit :

Néanmoins je réfère les formules ci-dessus (pas que la mienne, je ne suis pas chauvin) qui cherchent un texte qui n'est pas donné a priori, c'est-à-dire un texte qui suit PRLV SEPA et précède unblanc suivant ....

C'est effectivement ainsi que j'ai interprété le besoin énoncé.

Rebonjour,

Merci pour toutes vos réponses plus mirifiques les uns que les autres mais je me suis mal fait comprendre , vos formules s'adaptent parfaitement si je n'avais que ces ces 2 libellés (CIC et EDF) mais j'en ai beaucoup d'autres!

je pensai plutôt faire une table matrice en isolant la chaîne intéressante et venir piocher grâce a la fonction recherchv mais je n'arrive pas a mettre en oeuvre cette solution, pas sur non plus qu'elle soit la bonne

Pour ceux qui ont tenter une solution VBA n'y connaissant rien en attendant que je l’étudie pourriez vous m'indiquer la marche a suivre pour l'appliquer?merci

cordialement,

doz a écrit :

Merci pour toutes vos réponses plus mirifiques les uns que les autres mais je me suis mal fait comprendre , vos formules s'adaptent parfaitement si je n'avais que ces ces 2 libellés (CIC et EDF) mais j'en ai beaucoup d'autres!

Utilise alors la formule de JFL, c'est le plus simple !

Pour la solution avec macro (celle que je te proposais, je n'ai pas étudié les autres), ouvre l'éditeur de macro Alt+F11, ajoute un module et copie le code que j'ai mis en page dedans. Enregistre en xlsm.

Bonsoir,

Pour la fonction que j'ai fournie, tu la copies, et comme pour Steelson, tu la places dans un Module Standard :

Ouverture de l'éditeur VBA : Onglet Développeur > Visual Basic (ou raccourci clavier Alt+F11)

Dans l'éditeur : menu Insertion > Module

Et dans le module créé, tu colles la fonction.

Utilisation comme les fonctions d'Excel : tu as un libellé en A1, tu tapes la formule par exemple en B1 :

=EXTRACPRLV(A1)

et elle te renvoie le 3e mot de ton libellé ! C'est vraiment pas compliqué, et efficace dès lors que tes libellés se présentent avec cette structure régulière.

Cordialement.

Bonjour ,

Merci encore pour vos suggestions mais elles ne s'adaptent pas a ma maladroite demande,

en fait il existe de nombreuses écritures, une centaine qui reviennent périodiquement mais dont certaines varie d'un chiffre; j'aimerai si c'est possible faire reconnaître un intitule unique a une ecriture

ex

Aux ecrutures suivantes;

1 PRLV SEPA DIRECTION GENERALE DE 00041009M34100147 11763469425249 222 MENM341001475369 IMPOT

2 PRLV SEPA DIRECTION GENERALE DE 1E060690137382 131763469425249 222 MENM36902373826

IMPOT

3 VIR HARMONIE MUTUELLE IP0127892175 TP-2017-HARMONIE MUTUELLE - -609143-0349-033

4 PRLV SEPA FREE MOBILE FMPMT-390690

5 VIR RAM PRESTATION RHONE 155129935 VIREMENT DE RAM PR RHONE

..... etc

J'aimerai toujours faire reconnaître ces écritures, qui sont périodiques :

1 Taxe d’habitation

2 ISF (je plaisante)

3 Harmonie mutuelle

4 Free mobile

5 Ram

etc

Voili voila je serai heureux de féliciter celui qui résoudra ce petit casse-tête

bonjour

donc ; il te faudrait un outil du genre celui que je t'ai proposé ( choix dans une liste et extraction )

a noter que l'extraction peut se faire soit :directement dans le tablo (filtre) ou dans un tablo annexe comme ma pj

comme visiblement tu as plusieurs criteres qui t'interessent ; le mieux est que tu les mettes manuellemnt sous forme de liste de references ;exel ne peu pas deviner tes poles d'interet

cordialement

illustration

14doz-3.xlsm (13.75 Ko)

Bonsoir,

Merci d'avoir répondu je regarderai attentivement ta solution avec un peu de temps libre

Cordialement

Bonjour,

La question devient complètement différente de la question initiale ! ce n'est plus un mot dont la position est fixe qu'il faut récupérer, c'est un ou deux ou parfois plus avec expression tronquée... Dans ces conditions, l'identification à partir d'une liste préétablie préconisée par Tulipe paraît le plus réaliste !

Cordialement. Bonne journée.

doz a écrit :

Bonjour ,

Merci encore pour vos suggestions mais elles ne s'adaptent pas a ma maladroite demande,

en fait il existe de nombreuses écritures, une centaine qui reviennent périodiquement mais dont certaines varie d'un chiffre; j'aimerai si c'est possible faire reconnaître un intitule unique a une ecriture

ex

Aux ecrutures suivantes;

1 PRLV SEPA DIRECTION GENERALE DE 00041009M34100147 11763469425249 222 MENM341001475369 IMPOT

2 PRLV SEPA DIRECTION GENERALE DE 1E060690137382 131763469425249 222 MENM36902373826

IMPOT

3 VIR HARMONIE MUTUELLE IP0127892175 TP-2017-HARMONIE MUTUELLE - -609143-0349-033

4 PRLV SEPA FREE MOBILE FMPMT-390690

5 VIR RAM PRESTATION RHONE 1299 VIREMENT DE RAM PR RHONE

..... etc

J'aimerai toujours faire reconnaître ces écritures, qui sont périodiques :

1 Taxe d’habitation

2 ISF (je plaisante)

3 Harmonie mutuelle

4 Free mobile

5 Ram

etc

Voili voila je serai heureux de féliciter celui qui résoudra ce petit casse-tête


Bonjour,

Mauvaise manip précédente désolé, pour répondre a MFerrand oui, effectivement je me rend compte que ma question initiale était mal posée .

J'ai essayer de prolonger la fonction de Tulipe mais il me semble qu'elle soit limitée par le nombre d’occurrenceS, quant à une liste préétablie, comment faire reconnaître a une écriture, un intitulé particulier, c'est ici que je bloque.

Cordialement,

Voici donc une autre solution avec une liste de tiers pré-définie

20prlv-sepa.xlsm (17.42 Ko)
Rechercher des sujets similaires à "extraire chaine caractere"