Microsoft 365 remplacer les espaces dans une chaine par 123456 etc

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Je cherche une formule pour remplacer les espaces dans une cellule :
(sans faire intervenir la position de l'espace)

Par exemple j'ai :
aaa bbbb ccccc dddeee eeeeeee fff etc

Je voudrais obtenir :
aaa1bbbb2ccccc3dddddd4eeeeeee5fff etc

Auriez-vous la solution ?
Un grand merci,
lionel :)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Adapté d'une formule de R@chid
Elle ne fait pas le job demandé, mais comme je la trouve jolie, je publie
(mais je sens qu'elle pourrait te servir, Lionel, non ? ;))
La formule en B2
Code:
=SIERREUR(INDEX(FILTRE.XML("<a><b>"&SUBSTITUE($A1;" ";"</b><b>")&"</b></a>";"//b");COLONNES($C:C));"")
A valider matriciellement pour Excel 2013
Recopie vers la droite puis vers le bas
FORMULE_filtrexml.png
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
ça pourrait être la petite sœur de SUBSTITUEX

VB:
Function SubstituePos(ByVal Cell As Range, ByVal Char As String, Optional ByVal arrays As Variant = "")
 'patrictoulon
Dim t,i&: t = Split(Cell.Text, " ")
    If Not IsArray(arrays) Then
        arrays = Evaluate("COLUMN(" & Cells(1).Resize(, UBound(t) + 1).EntireColumn.Address(0, 0) & ")")
    Else
        arrays = Application.Transpose(arrays)
    End If
    For i = 0 To UBound(t):        t(i) = t(i) & arrays(i&+ 1):    Next
    SubstituePos = Join(t, "")
End Function
1645293986312.png


juste comme ça en passant
bien sur on peut laisser des item vide "" si on veut le nieme etc......
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re

Adapté d'une formule de R@chid
Elle ne fait pas le job demandé, mais comme je la trouve jolie, je publie
(mais je sens qu'elle pourrait te servir, Lionel, non ? ;))
La formule en B2
Code:
=SIERREUR(INDEX(FILTRE.XML("<a><b>"&SUBSTITUE($A1;" ";"</b><b>")&"</b></a>";"//b");COLONNES($C:C));"")
A valider matriciellement pour Excel 2013
Recopie vers la droite puis vers le bas
Regarde la pièce jointe 1131396
merci JM pour ce que tu fais pour moi. Je prends aussi cette formule :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir
ça pourrait être la petite sœur de SUBSTITUEX

VB:
Function SubstituePos(ByVal Cell As Range, ByVal Char As String, Optional ByVal arrays As Variant = "")
 'patrictoulon
Dim t,i&: t = Split(Cell.Text, " ")
    If Not IsArray(arrays) Then
        arrays = Evaluate("COLUMN(" & Cells(1).Resize(, UBound(t) + 1).EntireColumn.Address(0, 0) & ")")
    Else
        arrays = Application.Transpose(arrays)
    End If
    For i = 0 To UBound(t):        t(i) = t(i) & arrays(i&+ 1):    Next
    SubstituePos = Join(t, "")
End Function
Regarde la pièce jointe 1131399

juste comme ça en passant
bien sur on peut laisser des item vide "" si on veut le nieme etc......
Merci Patrick, je regarde dès que j'ai un moment :)
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le fil, le forum,

A partir d'Excel 2016 je crois il existe la fonction JOINDRE.TEXTE.

Voyez le fichier joint et cette formule matricielle en B1 :
Code:
=JOINDRE.TEXTE("";VRAI;SIERREUR(STXT($A1;deb;fin-deb)&rang;""))
Il faut auparavant sélectionner B1 et définir les 4 noms mat deb fin rang comme indiqué.

A+
 

Pièces jointes

  • Classeur(1).xlsx
    10.4 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 279
Membres
103 170
dernier inscrit
HASSEN@45