web-dev-qa-db-fra.com

Supprimer tous les espaces d'une chaîne

J'ai créé une macro pour supprimer tous les espaces d'une chaîne, en particulier une adresse électronique. Cependant, il ne supprime que 95% environ des espaces et en laisse quelques-uns.

Mon code:

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w = Replace(w, " ", "")
    Next
End Sub

Les choses que j'ai essayé de résoudre le problème incluent:

~ Confirmé que les espaces sont bien des espaces avec la fonction Code, il s'agit du caractère 32 (espace)
~ Utilisé une macro de substitution en conjonction avec la macro de remplacement
~ Avoir une macro supplémentaire utilisant la fonction Limiter pour supprimer les espaces blancs de début et de fin
~ Création d'une macro séparée pour tester les espaces insécables (caractère 160)
~ Utilisé la fonctionnalité Rechercher et remplacer pour rechercher et remplacer des espaces avec rien. Confirmé de travail.

Je n'ai qu'une seule cellule sélectionnée lorsque je lance la macro. Il sélectionne et parcourt toutes les cellules en raison de la partie Selection.Cells du code.

Quelques exemples:

1 STAR MOVING @ ATT.NET
322 [email protected]
ALEZZZZ@AOL. COM. 

Ceux-ci ne contiennent que des espaces normaux, mais sont ignorés.

7
PatrykChristopher

Il suffit d'utiliser une expression régulière:

'Add a reference to Microsoft VBScript Regular Expressions 5.5
Public Function RemoveWhiteSpace(target As String) As String
    With New RegExp
        .Pattern = "\s"
        .MultiLine = True
        .Global = True
        RemoveWhiteSpace = .Replace(target, vbNullString)
    End With
End Function

Appelez ça comme ça:

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w.Value = RemoveWhiteSpace(w.Value)
    Next
End Sub
4
Comintern

Essaye ça:

Sub NoSpaces()
Selection.Replace " ", ""
End Sub
1
user1274820

Et pour ajouter aux excellents conseils de tous les grands contributeurs, essayez le

TRIM ou LTRIM, ou RTRIM et vous pouvez en savoir plus sur ces fonctions ici:

https://msdn.Microsoft.com/en-us/library/office/gg278916.aspx

Maintenant, cela ne supprime pas les espaces incorporés (espaces entre les lettres), mais supprime les espaces de début et de fin.

J'espère que cela t'aides.

1
Waseem

Utilisez "Remplacer" Exemple ... = SUBSTITUT (C1: C18, "", "")

1
Gi1ber7

Parce que vous supposez que Selection.Cells inclut toutes les cellules de la feuille.

Cells.Replace " ", ""
0
Slai