=GAUCHE(SUBSTITUE(TABLEAU.EN.TEXTE(STXT(B2;SEQUENCE(NBCAR(B2)/3;;1;3);3)&"+";0);"; ";"");NBCAR(B2)/3*4-1)
B2 | C61D06D18M01M02M03M10M15M32M36M37M41M42M43M55M57M64N00N06N13P03P28P30P61P67P88S02S16 |
B3 | C61+D06+D18+M01+M02+M03+M10+M15+M32+M36+M37+M41+M42+M43+M55+M57+M64+N00+N06+N13+P03+P28+P30+P61+P67+P88+S02+S16 |
=GAUCHE(SUBSTITUE(TABLEAU.EN.TEXTE(STXT(B2;SEQUENCE(NBCAR(B2)/3;;1;3);3)&"+";0);"; ";"");NBCAR(B2)/3*4-1)
B2 | C61D06D18M01M02M03M10M15M32M36M37M41M42M43M55M57M64N00N06N13P03P28P30P61P67P88S02S16 |
B3 | C61+D06+D18+M01+M02+M03+M10+M15+M32+M36+M37+M41+M42+M43+M55+M57+M64+N00+N06+N13+P03+P28+P30+P61+P67+P88+S02+S16 |
Parfait, Merci beaucoup. c'est génialBonsoir à toutes & à tous,
bonsoir @saggigo
Avec XL2021 ou XL365,
La cellule B2 contenant la chaîne à traiter, la formule :
renvoie la chaîne résultante.VB:=GAUCHE(SUBSTITUE(TABLEAU.EN.TEXTE(STXT(B2;SEQUENCE(NBCAR(B2)/3;;1;3);3)&"+";0);"; ";"");NBCAR(B2)/3*4-1)
B2 C61D06D18M01M02M03M10M15M32M36M37M41M42M43M55M57M64N00N06N13P03P28P30P61P67P88S02S16 B3 C61+D06+D18+M01+M02+M03+M10+M15+M32+M36+M37+M41+M42+M43+M55+M57+M64+N00+N06+N13+P03+P28+P30+P61+P67+P88+S02+S16
Voir le fichier joint
EDIT : Je suis arrivé un peu en retard sans avoir régénéré le fil, j'adore la solution de @Simply (il faut quand même que les triplets soient formés, comme dans l'exemple d'une lettre et de 2 chiffres) !
=JOINDRE.TEXTE("+";;STXT(A1;SEQUENCE(NBCAR(A1)/3;;1;3);3))
Merci beaucoup Mapomme, je vais la tester, je n'ai pas vérifié en detail celle que j'ai utilisé plus haut ( j'ai plus de 25000 lignes) mais elle avait l'air de fonctionner. Je vais donc tester la tienneBonjour à tous,
Juste pour le fun, j'ai essayé de comparer les différentes formules (3) et fonctions personnalisées (2) avec différents textes sources.
Il fallait choisir une référence => j'ai pris ma propre fonction personnalisée(tant qu'à faire).
Chaque auteur devra vérifier sa formule ou fonction pour voir si je n'ai pas commis d'erreur en les utilisant. Les cellules roses sont celles avec un résultat différent de celui de ma pomme.
nota : évidemment toutes les solutions fonctionnent pour le seul exemple fourni par @saggigo .
oui mais :Je vais donc tester la tienne
Function Sequence_Texte2007(t$, separator$, Optional Nieme As Long = 1)
Sequence_Texte2007 = Format(t, Application.Rept("@@@" & separator, Len(t) / Nieme))
End Function
Salut mapomme,Bonjour @saggigo,
oui mais :
L'important c'est d'arriver au résultat que toi tu désires. L'avantage d'une formule est qu'elle est utilisable sur toutes les plateformes y.c. pour les organisations qui "bloquent" le VBA pour raison de sécurité.
- je ne suis une référence
- toutes les formules ou fonctions personnalisées fonctionnent pour ton exemple
En ce moment, on est dans une situation bâtarde : Krosoft veut imposer son O365 à marche forcée (les abonnements c'est bien car ce sont des revenus récurrents, prévisibles et souvent durables). Les fonctions spécifiques à O365 sont puissantesmais ne sont pas rétro-compatibles et le parc d'excel comprend encore beaucoup d'autres versions d'O365 .
Bonjour Patricktoulon,bonjour
je veux faire joujou moi aussi
le genre de petite fonction perso qui tient en une seule ligne
VB:Function Sequence_Texte2007(t$, separator$, Optional Nieme As Long = 1) Sequence_Texte2007 = Format(t, Application.Rept("@@@" & separator, Len(t) / Nieme)) End Function
=Sequence_Texte2007(A1,"+",3)
J'ai testé ta formule et il y a un message d'erreur (voir image) sur la partie: [@txt]
=insertion(A1;3;"+")