Bonsoir à toutes & à tous, bonsoir
@merinos
Ok, dans le principe, ça ressemble à ce que j'ai proposé avec l'avantage des paramètres de la fonction LAMBDA mais malheureusement pas de LAMBDA avec la version 2021 !
Pour les explications de ma proposition :
il suffit d'encapsuler la formule du post#5 dans la fonction SUPPRESPACE et fini les espaces successifs !
VB:
=SUPPRESPACE(CONCAT(LET(T;B2;C;STXT(T;SEQUENCE(NBCAR(T));1);SI((CODE(C)<48)+(CODE(C)>57);" ";C))))
La fonction LET a deux paramètres :
T, le texte (ici contenu dans B2)
C, la liste des caractères de T dans un tableau de x lignes sur 1 colonne
et un résultat renvoyé :
SI((CODE(C)<48)+(CODE(C)>57);" ";C)
Pour C
On génère une liste de 1 au nombre de caractères du Texte T :
SEQUENCE(NBCAR(T))
Dans C on récupère 1 à 1 la liste des caractères de T (C est un tableau de caractères):
STXT(T;SEQUENCE(NBCAR(T))
pour le résultat on fait les remplacements de ce qui n'est pas un chiffre par des espaces :
Pour chaque élément de C non numérique (caractères de 48 à 57) on le remplace par un espace :
SI((CODE(C)<48)+(CODE(C)>57);" ";C)
On obtient donc un tableau de chiffres et d'espaces
On concatène le tableau résultat de la fonction LET:
CONCAT(LET(...)))
On supprime les espaces excédentaires
SUPPRESPACE(CONCAT(LET(...))))
À bientôt
PS : je n'ai pas encore testé ta formule que je dois traduire (j'ai une version française d'EXCEL2024)