[Résolu] Extraire mots entre virgules

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.
Zouzou78
Fraîchement OOthentifié
Messages : 4
Inscription : 07 avr. 2021 12:40

[Résolu] Extraire mots entre virgules

Message par Zouzou78 »

Bonjour,

Je travaille sur une liste avec des noms de communes dans une colonne, avec pour certaines cellules plusieurs communes dans une seule cellule, séparées par des virgules. Il peut y avoir de une à une infinité de communes dans chaque cellule. J'aimerais séparer ces communes dans différentes colonnes, pour n'avoir qu'une commune par cellule.

J'ai trouvé un code que j'ai adapté à ma problématique, j'ai rajouté une condition pour les cellules où il n'y a qu'une seule commune, mais j'ai encore un problème pour les cases suivant la dernière commune : je voudrais qu'elles soient vides mais il y a #VALEUR. Cela n'apparait que pour une case s'il y avait deux communes, deux s'il y en avait trois, etc. Voyez-vous une façon de régler mon problème ?

J'ai pensé à faire une condition "si la cellule précédente de la ligne est égale au dernier mot de la cellule d'origine alors ne pas remplir la cellule", mais je ne sait pas comment coder cela. Au départ j'essayais de faire ce travail avec des formules avec DROITE et GAUCHE mais je ne sais pas comment les coder sans connaitre à l'avance le nombre de communes dans la cellule, et j'aimerais que le processus soit automatique.


Voici la formule que j'utilise :

Code : Tout sélectionner

= SI(COLONNE()=2;SI(NBCAR($A3)=NBCAR(SUBSTITUE($A3;",";""));$A3;SI($A3="";"";SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;", ";""))="";$A3; GAUCHE($A3;TROUVE(", ";$A3;2)-1))));SI(NBCAR($A3)-NBCAR(SUBSTITUE($A3;", ";"")) <COLONNE()-2;"";STXT($A3;TROUVE("µ";SUBSTITUE($A3&", ";", ";"µ"; COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A3&", ";", ";"µ";COLONNE()-1);1)- TROUVE("µ";SUBSTITUE($A3;", ";"µ";COLONNE()-2);1)-1)))
Voici mon essai de condition à rajouter pour éviter les erreurs :

Code : Tout sélectionner

=SI(OU(INDIRECT(ADRESSE(LIGNE();COLONNE()-1))=DROITE(A3;NBCAR(A3)-CHERCHE(",";A3;CHERCHE(",";A3;1)+1) ; INDIRECT(ADRESSE(LIGNE();COLONNE()-1))=DROITE(A3;NBCAR(A3)-CHERCHE(",";A3;1)));"")
Merci d'avance

PS : je suis sous LibreOffice 6.1 sous Windows 10
Dernière modification par Zouzou78 le 09 avr. 2021 09:27, modifié 2 fois.
LibreOffice 6.1 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Extraire mots entre virgules

Message par Dude »

Salut,
Zouzou78 a écrit :avec pour certaines cellules plusieurs communes dans une seule cellule, séparées par des virgules.
Pas besoin de formule : https://forum.openoffice.org/fr/forum/v ... 29&t=13136
Zouzou78 a écrit :PS : je suis sous LibreOffice 6.1 sous Windows 10
La signature se modifie ici : https://forum.openoffice.org/fr/forum/u ... =signature
Zouzou78
Fraîchement OOthentifié
Messages : 4
Inscription : 07 avr. 2021 12:40

Re: Extraire mots entre virgules

Message par Zouzou78 »

Merci c'est en effet beaucoup plus pratique qu'une formule ! Seulement j'essaye de rendre le processus automatique, pour que si une commune est ajoutée dans une cellule ou si une ligne est ajoutée en dessous cela soit automatiquement décliné en plusieurs colonnes, c'est pourquoi j'ai besoin d'une formule.
LibreOffice 6.1 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Extraire mots entre virgules

Message par Dude »

Zouzou78 a écrit :Seulement j'essaye de rendre le processus automatique, pour que si une commune est ajoutée.
Quand je lis cette phrase, je subodore que les données viennent d'autre part.
Ne serait-ce pas un CSV généré ou exporté d'une base de données ?
Zouzou78
Fraîchement OOthentifié
Messages : 4
Inscription : 07 avr. 2021 12:40

Re: Extraire mots entre virgules

Message par Zouzou78 »

Oui j'ai extrait juste la colonne des communes d'un tableau. J'essaye de rendre son remplissage simple, les agents doivent donc remplir dans une seule case le nom de toutes les communes concernées par un projet d'aménagement (une ligne du tableau = un projet), et je veux les récupérer séparément pour avoir un format de de base de données pour travailler dessus.
LibreOffice 6.1 sous Windows 10
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: Extraire mots entre virgules

Message par zeguedon »

Bonjour,
Zouzou78 a écrit :J'ai trouvé un code que j'ai adapté à ma problématique, j'ai rajouté une condition pour les cellules où il n'y a qu'une seule commune, mais j'ai encore un problème pour les cases suivant la dernière commune : je voudrais qu'elles soient vides mais il y a #VALEUR
Tu peux englober ta formule dans la fonction SIERREUR():

Code : Tout sélectionner

=SIERREUR(TaFormule;"")
@+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Zouzou78
Fraîchement OOthentifié
Messages : 4
Inscription : 07 avr. 2021 12:40

Re: Extraire mots entre virgules

Message par Zouzou78 »

C'est parfait merci beaucoup !!
LibreOffice 6.1 sous Windows 10
Verrouillé