Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 supprimer des signes

bobafric

XLDnaute Occasionnel
Bonjour
Comment supprimer ou remplacer par un espace les signes qui séparent les nombres dans les cellules
 

Pièces jointes

  • Classeur1.xlsx
    8.7 KB · Affichages: 19
Solution
Bonsoir à toutes & à tous,

@merinos , je suis sur mon téléphone avec une version très simplifiée d'Excel 365, alors excuse moi si je dis des bêtises.
Il me semble que ta proposition s'éloigne un peu du sujet du fil :
Avec Excel2021, d'une chaîne qui se compose de groupes de chiffres parmis d'autres caractères quelconques, ne conserver que les groupes de chiffres séparés par 1 espace.
Excel2021 : pas de LAMBDA. Et comment faire avec la table pour atteindre le but ?
Là je n'ai pas accès au gestionnaire de nom donc pas accès à la définition de ta formule, mais dès que je retrouve mon PC je regarderai.

@jurassic pork , dans mon post#10 je me suis un peu compliqué la vie en fait il suffit d'encapsuler la formule du post#5 dans...

merinos-BernardEtang

XLDnaute Accro
Salut à tous,


j'emploie une table de remplacement ...

Et une fonction LAMBDA effectue les remplacement dans l'ordre.... sans regarder les longueurs... ni même si se qu'il remplace n'est pas une partie obtenue par remplacement d'autre-chose.




 

Pièces jointes

  • LAMBDA Substituteur text.xlsx
    47.2 KB · Affichages: 4

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir à toutes & à tous,

@merinos , je suis sur mon téléphone avec une version très simplifiée d'Excel 365, alors excuse moi si je dis des bêtises.
Il me semble que ta proposition s'éloigne un peu du sujet du fil :
Avec Excel2021, d'une chaîne qui se compose de groupes de chiffres parmis d'autres caractères quelconques, ne conserver que les groupes de chiffres séparés par 1 espace.
Excel2021 : pas de LAMBDA. Et comment faire avec la table pour atteindre le but ?
Là je n'ai pas accès au gestionnaire de nom donc pas accès à la définition de ta formule, mais dès que je retrouve mon PC je regarderai.

@jurassic pork , dans mon post#10 je me suis un peu compliqué la vie en fait 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))))
Bon mais la formule du post#10 montre une utilisation de la fonction FILTRE.XML ...
À bientôt
 
Dernière édition:

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes & à tous, bonjour @merinos
mais dès que je retrouve mon PC je regarderai.
Ok j'ai vu, les deux fonctions LAMBDA utilisées on l'avantage d'être simples à écrire et à comprendre.
Par contre, pour traiter le problème du fil il faudrait mettre dans la table tous les caractères UNICODES autres que numériques (4086 caractères moins les doublons), et dans la colonne "New" un espace, et finir par un SUPPRESPACE plutôt que par un MAJUSCULE ... J'ai essayé, chez moi EXCEL Rame :



À bientôt
 

merinos-BernardEtang

XLDnaute Accro
Salut @AtTheOne ,

j'ai adapté l'idée :

VB:
=LAMBDA(text;
    TRIM(SUBSTITUTE(
        TEXTJOIN(
            "";
            TRUE;
            IF(
                ISNUMBER(--MID(text;SEQUENCE(LEN(text));1));
                MID(text;SEQUENCE(LEN(text));1);
                " "
            )
        );
        CHAR(160);
        " "
    ))
)(C14)



on remplace d'abord ce qui n'est pas des chiffres en espaces, puis la fonction TRIM fait le nettoyage des doublons.

a+

Merinos
 

Pièces jointes

  • keepnumbers.xlsx
    11.6 KB · Affichages: 2

AtTheOne

XLDnaute Accro
Supporter XLD
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)
 

Discussions similaires

Réponses
6
Affichages
164
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…