Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2019supprimer les espaces + les lettres et garder les chiffres
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
merci beaucoup pour votre retour,
désolé, effectivement mon fichier exemple n'était pas complet, il y'a bien plusieurs possibilités (avec plusieurs espaces, ou pas d'espaces). avec la solution du Power Query ça marche très bien (même si je connais pas encore son fonctionnement exacte) ça me pousse à creuser un peu plus de ce coté là.
merci beaucoup pour la réponse,
une formule que j'aime bien, c'est plus simple, je crois que je vais l'utiliser dans un autre exemple. par ce qu'avec la solution du power Query ça me permet de garder aussi la partie qui est en lettre.
bonjour,
c'est parfait comme solution, merci beaucoup.
y'a t'il une formule de ce genre pour faire le contraire, c'est à dire garder les "lettres" et supprimer les "espaces et les chiffres"
Comme je n'ai pas Excel 2019 chez moi (mais 2013), je ne dispose pas de JOINDRE.TEXTE
Alors toujours en utilisant FILTRE.XML
(je suis parti du dernier fichier déposé par job75)
NB: Pour reproduire le test, saisir la formule ci-dessous en E4
Puis tout en restant dans la barre de formule, sélectionnez F4 et G4 puis valider par CRTL+SHIFT+ENTREE
Sinon lancer cette petite macro qui fera le boulot
VB:
Sub Insertion_Formule()
Range("E4:G4").FormulaArray = _
"=IFERROR(INDEX(TRANSPOSE(FILTERXML(""<t><s>""&SUBSTITUTE(B4,""-"",""</s><s>"")&""</s></t>"",""//s[translate(.,'1234567890','')=.]"")),1,COLUMN()-4),"""")"
Range("E4:G6").FillDown
End Sub
Si l'on veut ne garder que les lettres, avec ou sans accents, on peut utiliser cette fonction VBA :
VB:
Function Lettres$(x$)
Dim accent$, y$, i%, z$
accent = "àáâãäåòóôõöøèéêëìíîïùúûüÿñç"
y = LCase(x) 'minuscules
For i = 1 To Len(x)
z = Mid(y, i, 1)
If Asc(z) > 96 And Asc(z) < 123 Or InStr(accent, z) Then Lettres = Lettres & Mid(x, i, 1)
Next
End Function
Le code doit être placé impérativement dans un module standard.
Comme je n'ai pas Excel 2019 chez moi (mais 2013), je ne dispose pas de JOINDRE.TEXTE
Alors toujours en utilisant FILTRE.XML
(je suis parti du dernier fichier déposé par job75) Regarde la pièce jointe 1133960
NB: Pour reproduire le test, saisir la formule ci-dessous en E4
Puis tout en restant dans la barre de formule, sélectionnez F4 et G4 puis valider par CRTL+SHIFT+ENTREE
Sinon lancer cette petite macro qui fera le boulot
VB:
Sub Insertion_Formule()
Range("E4:G4").FormulaArray = _
"=IFERROR(INDEX(TRANSPOSE(FILTERXML(""<t><s>""&SUBSTITUTE(B4,""-"",""</s><s>"")&""</s></t>"",""//s[translate(.,'1234567890','')=.]"")),1,COLUMN()-4),"""")"
Range("E4:G6").FillDown
End Sub
Sofiane
La copie d'écran du message#21 montre bien qu'il n'y a pas de vide.
J'ai même ajouté une petite macro pour mettre la formule (au cas où tu oublies de la valider matriciellement)
NB: Ma proposition est juste pour ceux qui s'intéressent à ce qu'on peut faire avec FILTRE.XML.
(Ce n'est une solution pas clé en mains, juste une énième façon de n'extraire que les lettres d'une chaine de caractères que j'ai posté à titre informatif)
Si on peut utiliser une fonction VBA personnalisée pour ne garder que les lettres
Voici une autre fonction possible
A mettre dans un module standard
VB:
Function alpha(txt As String) As String
Dim b, bytes() As Byte: bytes = txt
For Each b In bytes
If Chr(b) Like "[A-Za-z]" Then alpha = alpha & Chr(b)
Next b
End Function
NB: code retrouvé dans mes archives.
Mode d'emploi sur le fichier exemple
=alpha(E4)
Si tu testes sur un fichier vierge (dans lequel tu auras insérer un module puis copier/coller le code VBA dans celui-ci)
Saisis par exemple en A1: Staple1600 a mangé 3 pommes
Puis en B1: =alpha(A1)
Le résultat sera : Stapleamangpommes
Tu vois donc le petit souci qu'heureusement n'a pas la fonction VBA de job75.
EDITION: Une autre version VBA (qui utilise les expressions régulières) (et qui cette fois, conserve les accents)
(toujours issue de mes archives)
VB:
Function alphac(S As String) As String
Static RX As Object
If RX Is Nothing Then
Set RX = CreateObject("VBScript.RegExp")
RX.Global = -1
End If
RX.Pattern = "[^a-zA-Zàéèùäë]"
alphac = RX.Replace(S, "")
End Function
NB: si tu veux conserver plus de caractères accentués ajoute-les sur cette ligne
RX.Pattern = "[^a-zA-Zàéèùäë]"
Tu peux t'inspirer de la liste figurant dans le code de job75
Si on peut utiliser une fonction VBA personnalisée pour ne garder que les lettres
Voici une autre fonction possible
A mettre dans un module standard
VB:
Function alpha(txt As String) As String
Dim b, bytes() As Byte: bytes = txt
For Each b In bytes
If Chr(b) Like "[A-Za-z]" Then alpha = alpha & Chr(b)
Next b
End Function
NB: code retrouvé dans mes archives.
Mode d'emploi sur le fichier exemple
=alpha(E4)
Si tu testes sur un fichier vierge (dans lequel tu auras insérer un module puis copier/coller le code VBA dans celui-ci)
Saisis par exemple en A1: Staple1600 a mangé 3 pommes
Puis en B1: =alpha(A1)
Le résultat sera : Stapleamangpommes
Tu vois donc le petit souci qu'heureusement n'a pas la fonction VBA de job75.
EDITION: Une autre version VBA (qui utilise les expressions régulières) (et qui cette fois, conserve les accents)
(toujours issue de mes archives)
VB:
Function alphac(S As String) As String
Static RX As Object
If RX Is Nothing Then
Set RX = CreateObject("VBScript.RegExp")
RX.Global = -1
End If
RX.Pattern = "[^a-zA-Zàéèùäë]"
alphac = RX.Replace(S, "")
End Function
NB: si tu veux conserver plus de caractères accentués ajoute-les sur cette ligne
RX.Pattern = "[^a-zA-Zàéèùäë]"
Tu peux t'inspirer de la liste figurant dans le code de job75
Bonjour,
Un peu tard mais je vous propose une solution avec une petite fonction à insérer dans un module VBA
Après, il suffit d'appeler la fonction et de lui désigner la cellule contenant le texte original.
L'intérêt est que cela fonctionne quelque soit l'Excel utilisé mais il faut que le classeur soit enregistré pour accepter les macros.
Si compléments d'informations nécessaire, n'hésitez pas à me revenir
Bon courage
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD