[Résolu] Renseigner colonne depuis une chaîne de caractères

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
gyltar
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 08 août 2017 09:17

[Résolu] Renseigner colonne depuis une chaîne de caractères

Message par gyltar »

Bonjour à tous,

Je reviens une nouvelle fois vers vos compétences afin de résoudre une difficulté (pour moi du moins :D ).

J’ai une colonne dans laquelle il y a plusieurs mots et caractères qui représentent un libellé. Dans la colonne suivante je dois définir le type de mouvement à partir d’une suite de caractère de la colonne précitée.

Exemple :

Colonne A :
VIR 7510505487
VST 541154876
VIR 2165831321
VIREMENT 124887984
VERST 2515
VST 565464
VIR 448596514
PRLV 554
PRELEVEMENT 263514654
PRELEV 65463546
VIRT 68465464

Colonne B : je veux définir que si la colonne A a ou contient VIR ou VIREMENT ou VIRT = VIREMENT ; S’il y a VERST ou VERSEMENT ou VST = VERSEMENT ; s’il y a PRLV ou PRELEV = PRELEVEMENT

J’ai essayé avec RECHERCHEV mais comme je n’ai pas de valeur absolue il met #N/D, et quand je choisi valeur la plus proche cela ne correspond pas au type d’opération.

Ou sinon je pensais avec la fonction SI mais je pense qu’il faut rédiger une formule imbriquée. Non ?

J’espère avoir été explicite. Je vous joins le fichier en question.

Je vous remercie par avance.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par gyltar le 07 sept. 2017 08:30, modifié 2 fois.
LibreOffice version 6.4.7.2
Ubuntu 20.04.5 LTS
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par Dude »

Salut,

Il suffit de faire ton tableau de correspondance avec tous les cas de figure rencontrés.
gyltar
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 08 août 2017 09:17

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par gyltar »

Dude a écrit :Salut,

Il suffit de faire ton tableau de correspondance avec tous les cas de figure rencontrés.
:shock: euh ça me parait carrément impossible car chaque opération porte une chaine de caractère différente avec seulement VIR VERST etc... en commun. Dans ce cas mieux vaut que je renseigne moi-meme chaque ligne... et là c'est la fin du monde parce que j'ai beaucoup, mais alors beaucoup de lignes (+ de 2000). :aie:
LibreOffice version 6.4.7.2
Ubuntu 20.04.5 LTS
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par jeanmimi »

Bonjour,
Pour extraire les caractères du début du Libellé :

Code : Tout sélectionner

=GAUCHE(A2;CHERCHE(" ";A2;1)-1)
Puis essayer par Rechercher Remplacer dans la colonne.

Il y a moins de 10 passages à faire, ce qui est rapide, et peut être automatisé par une Macro.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par jeanmimi le 09 août 2017 12:49, modifié 2 fois.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1666
Inscription : 15 déc. 2010 08:33

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par yclik »

bonjour
une première piste si un espace sépare le type d'opération

Code : Tout sélectionner

=RECHERCHEV(GAUCHE(A2;TROUVE(" ";A2)-1);$A$16:$B$25;2;0)
OpenOffice 4.1.14 sous Windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par Hubert Lambert »

Bonjour,

Une solution par formule matricielle (à valider par ctrl+alt+entrée) :

Code : Tout sélectionner

=INDEX($B$16:$B$22;EQUIV(0;ESTERR(CHERCHE($A$16:$A$22;A2;0));0);0)
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par Jeff »

Bonjour à tous,

HS : lorsque Dude te parle d’un tableau de correspondance, il s’agit bien du glossaire qui existe dans ton fichier :wink:

Une variante matricielle, en B2 et suivantes :

Code : Tout sélectionner

=INDEX($A$15:$B$22;EQUIV(GAUCHE(A2;3);GAUCHE($A$15:$A$22;3);0);2)
Fonction matricielle à valider par Ctrl + Maj + Entrée, presser Ctrl lors de la recopie.

Cependant, le plus simple me semble de faire un glossaire abrégé :
gyltar_abrev_glossaire.png
Et du coup, une simple fonction RECHERCHEV fait le travail, en B2 et suivantes :

Code : Tout sélectionner

=RECHERCHEV(GAUCHE(A2;3);$B$15:$C$22;2;0)
Il s’agit là d’une fonction standard à valider par Entrée :)
gyltar_recherchev.png
A +
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
gyltar
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 08 août 2017 09:17

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par gyltar »

Bonjour à tous,

Je rentre de vacances seulement. Merci pour les formules. A moi de comprendre la fonctionnalité GAUCHE :) et y a plus qu'à !

Encore merci à tous. :super:

Gylt
LibreOffice version 6.4.7.2
Ubuntu 20.04.5 LTS
gyltar
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 08 août 2017 09:17

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par gyltar »

gyltar a écrit :Bonjour à tous,

Je rentre de vacances seulement. Merci pour les formules. A moi de comprendre la fonctionnalité GAUCHE :) et y a plus qu'à !

Encore merci à tous. :super:

Gylt

Bonjour,

J'ai crié victoire trop vite ! en effet dans mes chaînes de caractères la formule GAUCHE ne fonctionne pas parce que de nombreuses lignes ne commence pas par VIREMENT, ESP, etc... Exemple : "TAXES ZY23 00001 TAXES ZY23 00001 PREL. SOCIAUX 15.50% +PRELEVEMENT IR 24.00%". Dans ce type de ligne PRELEVEMENT n’apparaît que beaucoup plus loin.

La formule =RECHERCHEV(GAUCHE(A2;3);$B$15:$C$22;2;0) (qui prend que les trois premiers caractères ) est donc inapplicable. Du coup je me demandais si avec une formule du genre =RECHERCHEV(TROUVE("ESP" ou VIR_______);$B$15:$C$22;2;0)... je ne pourrais pas y arriver. Cependant avec TROUVE je n'ai le choix sur un terme alors qu'il faut que je lui donne le choix sur plusieurs).
Je ne sais pas si j'ai été clair.

Merci par avance et j'espère que vous avez tous fait une bonne rentrée. ;)

G.
LibreOffice version 6.4.7.2
Ubuntu 20.04.5 LTS
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par Hubert Lambert »

gyltar a écrit :Dans ce type de ligne PRELEVEMENT n’apparaît que beaucoup plus loin.
Donc bis repetita... : https://forum.openoffice.org/fr/forum/v ... 27#p299127.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: Renseigner colonne depuis une chaîne de caractères

Message par Jeff »

Avec une très légère modif de la formule matricielle d’Hubert Lambert :

Code : Tout sélectionner

=INDEX($B$15:$B$22;EQUIV(0;ESTERR(CHERCHE(".*"&$A$15:$A$22&".*";A2));0);0)
Veiller à ce que soit coché Outils > Options > Calc > Calculer > Autoriser les caractères génériques.

Attention, car avec le texte :
TAXES ZY23 00001 ESPACE TAXES ZY23 00001 PREL. SOCIAUX 15.50% +PRELEVEMENT IR 24.00%
les 3 premières lettres d’ESPACE renvoient à ESPÈCES, il faut donc bien définir ton glossaire :)

A +
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
gyltar
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 08 août 2017 09:17

Re: renseigner une colonne à partir d'une chaine de caractèr

Message par gyltar »

Hubert Lambert a écrit :
gyltar a écrit :Dans ce type de ligne PRELEVEMENT n’apparaît que beaucoup plus loin.
Donc bis repetita... : https://forum.openoffice.org/fr/forum/v ... 27#p299127.
Bonjour,


Effectivement, j'avais initialement mal recopier la formule ! quelle buse suis-je !! :fou:

Merci beaucoup Hubert Lambert !!

Merci à tous d'avoir trouvé une solution à mon problème.

G.
LibreOffice version 6.4.7.2
Ubuntu 20.04.5 LTS