[Résolu] joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

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.
kaelkael
Fraîchement OOthentifié
Messages : 4
Inscription : 05 déc. 2024 22:18

[Résolu] joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par kaelkael »

Bonjour la communauté,

Je vais tenter d'expliquer ma problématique le plus clairement possible : Je voudrais pouvoir utiliser une formule de concaténation de texte qui s'exécute jusqu'à trouver une cellule non vide dans une autre colonne.

Dans mon exemple, j'ai une colonne B avec des dates et une colonne C avec du texte.

Je voudrais que le texte apparaisse dans une seule cellule avec la date correspondante.

Le soucis c'est que parfois pour une date j'ai du texte sur deux lignes parfois trois, quatre ou cinq voire plus.

Par exemple, j'ai une cellule B2 avec une date, le texte correspondant à cette date se trouve dans deux lignes C2 et C3 à concatener puis une autre date en B4 et là du texte à concatener en C4, C5 et C6 et ainsi de suite.

Je précise que les fichiers que j'ai à traiter peuvent contenir plusieurs milliers de lignes d'où la nécessité pour moi de pouvoir automatiser tout ça. Car pour le moment, j'en suis à faire de la fusion ligne par ligne c'est horrible

Pour plus de compréhension, je joins un petit fichier exemple reprenant mes propos dans les colonnes B et C et le résultat attendu dans la colonne D.

En vous remerciant par avance pour votre ou vos contributions et en croisant les doigts pour apporter une solution à mon problème
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par kaelkael le 06 déc. 2024 14:34, modifié 1 fois.
Libre office 24.8 windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6057
Inscription : 02 janv. 2009 23:56

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par Jean-Louis Cadeillan »

Bonjour et bienvenue sur le forum,
Je te propose une solution qui exige d'ajouter une formule dans une autre colonne, formule permettant de combler les trous. En effet, dans ta colonne B, la date est implicite à chaque fois qu'elle est renouvelée. Par exemple, B3 est vide, alors que la date est le 01/01/2024. J'ai mis la formule correspondante en colonne E, qu'on peut masquer si besoin (ici en E2) :

Code : Tout sélectionner

=SI(B2="";E1;B2)
Ensuite en D, j'utilise une formule matricielle mono-cellule à base de JOINDRE.TEXTE() et de SI() (ici en D2) :

Code : Tout sélectionner

=SI(B2="";"";JOINDRE.TEXTE(" ";1;SI($E$2:$E$11=B2;$C$2:$C$11;"")))
Mono-cellule signifie que la formule ne retourne qu'une seule valeur.
Une formule matricielle se valide par Ctrl+Maj+Entrée. Elle se recopie vers le bas :
  • soit en positionnant la souris dans le coin inférieur droit de la cellule : le curseur se transforme en croix (+), puis, il faut cliquer/glisser vers le bas tout en appuyant simultanément sur la touche Ctrl ;
  • soit en copiant la cellule initiale (Ctrl+C), puis en sélectionnant la plage des cellules qui doivent contenir la même formule, puis en collant (Ctrl+V).
À tester ci-joint.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.7.2 (x64 et Java 1.8.0_451) et AOO 4.1.15 (et Java x32 1.8.0_431), Windows 7 Édition Intégrale 64 SP1
kaelkael
Fraîchement OOthentifié
Messages : 4
Inscription : 05 déc. 2024 22:18

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par kaelkael »

Bonjour Jean Louis et merci pour le mot d'accueil.

Et bien écoute, ta proposition me convient parfaitement. Effectivement elle implique une manipulation au départ avec les dates mais c'est effectivement très cohérent.

Par contre j'avoue que pour la formule matricielle, je n'y étais pas mais ça fait parfaitement le job. C'est sûr que par moi même, j'aurais du batailler de longues semaines pour arriver à cette solution. Et encore, je n'aurais peut être jamais trouvé.

En plus les explications que tu ajoutes en plus de la formule sont vraiment très claires. C'est super appréciable.

Un grand merci à toi Jean Louis. :wink:
Libre office 24.8 windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6057
Inscription : 02 janv. 2009 23:56

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par Jean-Louis Cadeillan »

LibO 24.2.7.2 (x64 et Java 1.8.0_451) et AOO 4.1.15 (et Java x32 1.8.0_431), Windows 7 Édition Intégrale 64 SP1
kaelkael
Fraîchement OOthentifié
Messages : 4
Inscription : 05 déc. 2024 22:18

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par kaelkael »

Re-bonjour Jean Louis

Je viens de mettre la formule à exécution sur un fichier à grande échelle. Elle fonctionne bien mais il reste un problème que je n'avais pas évoqué dans mon exemple. C'est que dans mes fichiers à traiter, j'ai des dates qui se répètent. Par exemple je peux avoir deux fois le 01 janvier ou 7 sept fois le deux janvier etc...

Et la formule, du coup ne fait pas la distinction et quand j'ai des dates qui se répètent, elle recopie dans la cellule tout ce qui concerne le 01 janvier s'il y a plusieurs 01 janvier et ainsi de suite avec toutes les dates.

Je ne sais pas si cela est très clair mais je tente.

Dans l'attente de te lire en retour.
Libre office 24.8 windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6057
Inscription : 02 janv. 2009 23:56

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par Jean-Louis Cadeillan »

En colonne E, j'ai ajouté une «signature», un n° de ligne :

Code : Tout sélectionner

=SI(B2="";E1;B2&LIGNE(A1))
Ainsi tous les jours à même date qui se suivent auront la même valeur dans cette colonne. Bien sûr, cette valeur n'est plus une date, mais comme c'est une colonne intermédiaire de calcul, cela n'a pas d'importance.
Ensuite j'ai modifié la formule de la colonne D en ajoutant cette signature :

Code : Tout sélectionner

=SI(B2="";"";JOINDRE.TEXTE(" ";1;SI($E$2:$E$13=B2&LIGNE(A1);$C$2:$C$13;"")))
ce qui permet de faire la correspondance.
À tester ci-joint,
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.7.2 (x64 et Java 1.8.0_451) et AOO 4.1.15 (et Java x32 1.8.0_431), Windows 7 Édition Intégrale 64 SP1
kaelkael
Fraîchement OOthentifié
Messages : 4
Inscription : 05 déc. 2024 22:18

Re: joindre texte dans une colonne jusqu'à trouver une cellule non vide dans une autre

Message par kaelkael »

Re bonjour Jean-Louis,

Et bien voilà, on y est, ta méthode fonctionne parfaitement.

Je viens de la tester sur l'un de mes fichiers à grande échelle et tout fonctionne. Il a fallu que j'adapte un petit peu car les colonnes ne correspondaient pas nécessairement à mon fichier exemple et surtout que je comprenne que la signature du numéro de ligne ajoutée faisait légèrement planter la formule car la colonne A en l'occurrence était prise par une clé de tri me permettant de faire des tris dans tous les sens et de pouvoir surtout revenir à la position d'origine in fine.

Bref en rectifiant tout ça, ça fonctionne.

Un grand merci à toi Jean Louis.

Je m'empresse de baliser le fil en résolu :wink:
Libre office 24.8 windows 10