Enlever un espace

Bonjour,

J'ai joint un fichier pour plus de facilité, je souhaiterais enlever l'espace entre le et 1 et les 0 dans la colonne G pour le 1 000 ligne 5. J'ai essayer le "recherche et remplacer" en recherche j'ai mis un espace et dans remplacer par je n'ai rien mis.

J'ai aussi utiliser la formule =SUBSTITUE(G5;" ";"") mais rien à faire.

Je souhaiterais mettre cette action dans une macro pour mes futurs extraction (ce sont des données extraits d'un logiciel).

Merci pour votre aide

Elodie

6test.xlsx (9.46 Ko)

Bonjour,

Je vous invite à tester les 2 formules ci-dessous pour comprendre l'origine du problème :

=CODE(" ")
=CODE(" ")

L'espace utilisé dans la premier provient d'un copié-collé de l'espace problématique. Le second est saisi au clavier.

Le premier est un espace insécable, qui renvoie donc le code ASCII 160, alors que le second est un espace classique (caractère n°32). La formule SUBSTITUE fonctionne si le bon caractère est utilisé.

Avec VBA, vous pouvez utiliser la fonction Replace, qui est similaire à SUBSTITUE. Exemple générique :

Sub SupprEspace()

Dim Cel As Range

For Each Cel In Sheets("NomFeuille").Range("A1:A100") 'Boucle sur les cellules de la plage
    Cel = Replace(Cel," ","") 'Suppression de l'espace indésirable
Next Cel

End Sub

Bonjour,

Je ne comprend pas tout, j'ai fait :

=CODE(G5) ça me donne 49

Et pour le code cela ne fonctionne pas, rien ne se passe

Bien sincèrement,

Bonjour, Bonjour Pedro22,

Une autre proposition.

Cdlt.

0test.xlsm (15.64 Ko)

Formule :

=CNUM(SUBSTITUE(G5;CAR(160);""))

VBA (ALT F8 et exécuter Clean_data) :

Public Sub Clean_data()
Dim lastRow As Long, rng As Range, r As Range
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(7).Resize(lastRow)
        rng.NumberFormat = "General"
        For Each r In rng
            r.Value = CLng(VBA.Replace(r.Value, Chr(160), vbNullString))
        Next
    End With
End Sub

Salut Jean-Eric !

Je ne comprend pas tout, j'ai fait :

=CODE(G5) ça me donne 49

Cette fonction attend un caractère unique. Il n'y avait pas lieu de modifier les fonctions indiquées dans mon 1er post pour comprendre. Elles sont à copier-coller telle qu'elle.

Et pour le code cela ne fonctionne pas, rien ne se passe

Le code VBA en revanche est à adapter à votre cas (nom de la feuille et référence de la plage). La macro ne se déclenche pas de façon automatique, il faut l’exécuter depuis l'onglet "Développeur" ou l'interface VBA.

PS : Vous pouvez rajouter un *1 à la suite de la fonction Replace pour forcer la conversion numérique.

Cel = Replace(Cel," ","")*1

Coucou !

Essaye cette formule ca marche chez moi ^^

=SUBSTITUE(G5;STXT(G5;2;1);"")

ca marche pour 1000 mais si tu passe sur 10 000 il faut changer le "STXT" à STXT(G5;3;1) .. (petit inconvenient si tu va au delà de 9999...)

Bonjour, Bonjour Pedro22,

Une autre proposition.

Cdlt.

Test.xlsm

Formule :

=CNUM(SUBSTITUE(G5;CAR(160);""))

VBA (ALT F8 et exécuter Clean_data) :

Public Sub Clean_data()
Dim lastRow As Long, rng As Range, r As Range
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(7).Resize(lastRow)
        rng.NumberFormat = "General"
        For Each r In rng
            r.Value = CLng(VBA.Replace(r.Value, Chr(160), vbNullString))
        Next
    End With
End Sub

Merci beaucoup cela fonctionne !!

Re,

Je persévère...

=CNUM(SUBSTITUE(G5;CAR(160);""))

Re,

Je persévère...

=CNUM(SUBSTITUE(G5;CAR(160);""))

Oups !...

Rechercher des sujets similaires à "enlever espace"