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)))
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)));"")
PS : je suis sous LibreOffice 6.1 sous Windows 10