Supprimer deux espaces en vba

13GIBE59

XLDnaute Accro
Bonjour le forum.

Dans le fichier joint, je souhaite supprimer en vba les deux espaces qui se trouvent devant le code de la colonne B.

Mon code ne supprime qu'un espace...:

Sub supprespaces()
Dim X As Long
For X = 2 To Range("B65536").End(xlUp).Row
Range("B" & X) = Replace(Range("B" & X), Chr(160), "")
Next X
End Sub

Et la réitération de la macro ne donne rien, il reste toujours un espace de trop...

J'ai essayé :
Code:
Range("B" & X) = Replace(Range("B" & X), Chr(160) & Chr(160), "")

Sans succès, j'ai essayé de doubler :Range("B" & X) = Replace(Range("B" & X), Chr(160), "")

là aussi, chou blanc.

Quelqu'un a-t'il une idée ?

Merci d'avance.
 

Pièces jointes

  • Double espace.xls
    17 KB · Affichages: 72

Jocelyn

XLDnaute Barbatruc
Re : Supprimer deux espaces en vba

Bonjour le Forum,
Bonjour 13GIBE59,

Je ne sais pas le faire en VBA mais il me semble que tu as dans tes donnée un espace en caractère 160 et un en caractère 32 peut être cela t'aidera a trouver la solution car ta macro ne parle pas du CAR(32)

Cordialement
 

13GIBE59

XLDnaute Accro
Re : Supprimer deux espaces en vba

Bonjour Jocelyn,

merci pour ta réponse qui m'apprend (comme d'habitude) quelque chose : qu'est-ce que le Chr 32 ?

Cela dit, avec :

Code:
Sub supprespaces()
Dim X As Long
For X = 2 To Range("B65536").End(xlUp).Row
        Range("B" & X) = Replace(Range("B" & X), Chr(160), "")
        Range("B" & X) = Replace(Range("B" & X), Chr(32), "")
Next X
End Sub

ça marche parfaitement, merci !
 

Pièces jointes

  • Liste chr.doc
    57 KB · Affichages: 68
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Supprimer deux espaces en vba

salut

Code:
Sub supprespaces()
  Dim X As Long
  For X = 1 To Range("B65536").End(xlUp).Row
    Range("B" & X) = Replace(Range("B" & X), Chr(160), "")
    Range("B" & X) = LTrim(Range("B" & X))
  Next X
End Sub
Ltrim supprime l'espace (code ASCII =32) à gauche
 

Jocelyn

XLDnaute Barbatruc
Re : Supprimer deux espaces en vba

re,

Le car(32) en formule ou peut être chr(32) en VBA mais la pas sur est un espace insécable

voila ce qu'en dit wikipédia

Une espace insécable est un caractère typographique consistant en une espace que l’on intercale entre deux mots (ou un mot et une ponctuation) qui ne doivent pas être séparés par un éventuel retour à la ligne automatique. L’espace insécable permet d’éviter qu’un mot ou une ponctuation soit rejeté et isolé en début de ligne lorsque cela nuirait à la fluidité de la lecture.
Le code typographique français recommande, contrairement à d’autres langues telles que l’anglais, une espace insécable[SUP]1[/SUP] devant les signes de ponctuation doubles (point-virgule, point d’interrogation, point d’exclamation, deux-points), entre les guillemets et le texte qu’ils renferment, ainsi que comme séparateur des groupes de caractères (séparateur de groupes de trois chiffres dans les nombres par tranches de mille pour la partie entière et la partie décimale[SUP]2[/SUP], séparateur sans valeur facilitant la lecture des numéros de téléphone[SUP]3[/SUP] ou des numéros et codes d’identification, etc.).

EDIT : Bonjour SI...
 
Dernière édition:

13GIBE59

XLDnaute Accro
Re : Supprimer deux espaces en vba

re,

Le car(32) en formule ou peut être chr(32) en VBA mais la pas sur est un espace insécable

voila ce qu'en dit wikipédia

Une espace insécable est un caractère typographique consistant en une espace que l’on intercale entre deux mots (ou un mot et une ponctuation) qui ne doivent pas être séparés par un éventuel retour à la ligne automatique. L’espace insécable permet d’éviter qu’un mot ou une ponctuation soit rejeté et isolé en début de ligne lorsque cela nuirait à la fluidité de la lecture.
Le code typographique français recommande, contrairement à d’autres langues telles que l’anglais, une espace insécable[SUP]1[/SUP] devant les signes de ponctuation doubles (point-virgule, point d’interrogation, point d’exclamation, deux-points), entre les guillemets et le texte qu’ils renferment, ainsi que comme séparateur des groupes de caractères (séparateur de groupes de trois chiffres dans les nombres par tranches de mille pour la partie entière et la partie décimale[SUP]2[/SUP], séparateur sans valeur facilitant la lecture des numéros de téléphone[SUP]3[/SUP] ou des numéros et codes d’identification, etc.).

Merci pour cet éclairage, cependant encore obscur pour moi...:) Plusieurs lectures m'aideront...:confused:
 

benzeboss

XLDnaute Nouveau
Re : Supprimer deux espaces en vba

Bonjour Jocelyn,

merci pour ta réponse qui m'apprend (comme d'habitude) quelque chose : qu'est-ce que le Chr 32 ?

Cela dit, avec :

Code:
Sub supprespaces()
Dim X As Long
For X = 2 To Range("B65536").End(xlUp).Row
        Range("B" & X) = Replace(Range("B" & X), Chr(160), "")
        Range("B" & X) = Replace(Range("B" & X), Chr(32), "")
Next X
End Sub

ça marche parfaitement, merci !

Bonjour 13GIBE59,

Votre code fonctionne aussi parfaitement chez moi, cependant, il me supprime tous les espaces de mes cellulles, je veux juste qu'il me supprime les deux premiers espaces.
Je ne trouve pas de solution :( , pourriez-vous m'aider ?
 

Jiheme

XLDnaute Accro
Re : Supprimer deux espaces en vba

Bonjour le fil

Avec rechercher-remplacer

Tu copies tes deux espaces tu les colles dans rechercher, tu laisse remplacer vide, tu sélectionnes la colonne sur laquelle tu veux agir et tu fais remplacer tout.

A+


Désolé, mal réveillé pas vu "en vba"
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Supprimer deux espaces en vba

salut

tu peux passer par LTrim pour des espaces "normaux" (voir aide)
Variante :
Code:
Sub supprespaces()
  Dim R As Range
  For Each R In Range("B1", [B6000].End(xlUp))
    R = Replace(LTrim(R), Chr(160), "")
  Next
End Sub
 

benzeboss

XLDnaute Nouveau
Re : Supprimer deux espaces en vba

salut

tu peux passer par LTrim pour des espaces "normaux" (voir aide)
Variante :
Code:
Sub supprespaces()
  Dim R As Range
  For Each R In Range("B1", [B6000].End(xlUp))
    R = Replace(LTrim(R), Chr(160), "")
  Next
End Sub

Superbe !! ça marche, merci Si...

@Jiheme : Merci tout de même, mais je chercher à remplacer les espaces en utilisant un code pour éviter de devoir le faire à chaque fois :).
 

pierrejean

XLDnaute Barbatruc
Re : Supprimer deux espaces en vba

Re

pour ne remplacer que les premieres occurences

Code:
Sub supprespaces()
Dim X As Long
For X = 2 To Range("B65536").End(xlUp).Row
  Range("B" & X) = Replace(Range("B" & X), Chr(160), "", 1, 1)
  Range("B" & X) = Replace(Range("B" & X), Chr(32), "", 1, 1)
Next X
End Sub

Arf !!

En retard moi !!!
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
693
Réponses
7
Affichages
626

Statistiques des forums

Discussions
314 450
Messages
2 109 721
Membres
110 551
dernier inscrit
Khyolyanna