[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.

[Résolu] Extraire mots entre virgules

Messagepar Zouzou78 » 07 Avr 2021 13:23

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   AgrandirRéduire
= 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   AgrandirRéduire
=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 édition par Zouzou78 le 09 Avr 2021 08:27, édité 2 fois.
LibreOffice 6.1 sous Windows 10
Zouzou78
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 07 Avr 2021 11:40

Re: Extraire mots entre virgules

Messagepar Dude » 07 Avr 2021 13:39

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/viewtopic.php?f=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/ucp.php?i=profile&mode=signature
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22450
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Extraire mots entre virgules

Messagepar Zouzou78 » 07 Avr 2021 14:36

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
Zouzou78
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 07 Avr 2021 11:40

Re: Extraire mots entre virgules

Messagepar Dude » 07 Avr 2021 17:26

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 ?
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22450
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Extraire mots entre virgules

Messagepar Zouzou78 » 08 Avr 2021 08:18

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
Zouzou78
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 07 Avr 2021 11:40

Re: Extraire mots entre virgules

Messagepar zeguedon » 08 Avr 2021 12:13

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   AgrandirRéduire
=SIERREUR(TaFormule;"")

@+
Comment baliser [Résolu] ?
AOO 4.1.7
LibreOffice 6.4.7.2
Sous Linux & Windows 10
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2680
Inscrit le : 02 Juil 2014 18:25

Re: Extraire mots entre virgules

Messagepar Zouzou78 » 09 Avr 2021 08:27

C'est parfait merci beaucoup !!
LibreOffice 6.1 sous Windows 10
Zouzou78
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 07 Avr 2021 11:40


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)