Suppression d'espaces

Jiheme

XLDnaute Accro
Bonjour le Forum

J'ai un fichier extrait d'un logiciel de paie, et je ne trouve aucun moyen pour supprimer les espaces devant et derrière les nombres.

J'ai essayé avec la le menu remplacer, avec la fonction SUPPRESPACE, avec des codes trouvés par la rechreche dans le forum (que j'ai d'ailleurs laissés dans le classeur), avec collage spécial multiplication par 1 rien n'y fait.

Quelqu'un a t'il une autre idée ou un autre code?

Merci
 

Pièces jointes

  • Test.xlsm
    11.5 KB · Affichages: 78
  • Test.xlsm
    11.5 KB · Affichages: 79
  • Test.xlsm
    11.5 KB · Affichages: 86

Robert

XLDnaute Barbatruc
Repose en paix
Re : Suppression d'espaces

Bonjour Jiheme, bonjour le forum,

Ce n'est pas un espace commun, mais un espace insécable. Comme je ne sais pas à quoi ça correspond, j'ai copié un de ces espaces, puis j'ai utilisé la fonction Rechercher/Remplacer d'excel. Dans Rechercher j'ai collé l'espace insécable, dans Remplacer j'ai rien mis et j'ai fait Remplacer tout. Ça marche...

 

Pièces jointes

  • Jiheme_v01.xls
    43 KB · Affichages: 84
  • Jiheme_v01.xls
    43 KB · Affichages: 90
  • Jiheme_v01.xls
    43 KB · Affichages: 85

Jiheme

XLDnaute Accro
Re : Suppression d'espaces

Bonjour Robert, Re à tous

Effectivement cela fonctionne merci beaucoup, mais si quelqu'un sait nous traduire tout cela en VBA je suis toujours preneur car je risque d'avoir à traiter de plus en plus de données de ce type.

A+
 

Jiheme

XLDnaute Accro
Re : Suppression d'espaces

Bonjour Efgé, Le Forum

C'est parfait merci.

Au risque d'abuser, une petite ligne de code pour transformer tout cela en nombre, car après l'execution de la macro, tout est au format texte.

A+
 

Efgé

XLDnaute Barbatruc
Re : Suppression d'espaces

Bonjour à tous, Bonjour MJ13,
De mon côté j'en suis là:
Le problème viens du fait qu'il faut transformer des données texte en nombre et dans la bonne mise en forme
Quand on écrit dans une cellule "12,50 %" c'est du texte.... si on écrit 0,125 et que la cellule est au format pourcentage on a un nombre...
Je propose ceci, même si je reste persuadé qu'il y a mieux.
VB:
Sub remplace_2()
Dim C As Range, Tmp As Variant
Application.ScreenUpdating = False
For Each C In ActiveSheet.UsedRange
    Tmp = Replace(C.Value, Chr(160), "")
    If IsNumeric(Tmp) Then
        C.NumberFormat = "#,##0.00"
        Tmp = CDbl(Tmp)
    ElseIf InStr(Tmp, " %") > 0 Then
        Tmp = Replace(Tmp, " %", "") / 100
        C.NumberFormat = "0.00%"
        Tmp = CDbl(Tmp)
    End If
    C.Value = Tmp
Next C
Application.ScreenUpdating = True
End Sub

Cordialement

EDIT : Explication plus fichier
 

Pièces jointes

  • Classeur1.xlsm
    19.3 KB · Affichages: 65
  • Classeur1.xlsm
    19.3 KB · Affichages: 73
  • Classeur1.xlsm
    19.3 KB · Affichages: 68
Dernière édition:

david84

XLDnaute Barbatruc
Re : Suppression d'espaces

Bonjour tout le monde,
un essai en passant par du RegExp :
Code:
Function Epurer(MaChaine As String) As Double
Dim oRegExp As Object
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
    .Global = True
    .Pattern = "(*)"
    If .test(MaChaine) = True Then MaChaine = .Replace(MaChaine, "")
End With
Epurer = IIf(MaChaine = "", 0, MaChaine)
End Function

Code:
=Epurer(B5)
renvoie 1820,040

Si le résultat convient, tu peux soit inclure cette fonction dans ton traitement, soit reprendre l'idée pour la transformer en sub.
A+
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Suppression d'espaces

Re
en relisant la fonction sur le site, je m’aperçois que le copier-coller du caractère 160 donne un *, ce qui fausse donc le résultat.
En conséquence, ci joint la fonction avec le motif modifié en utilisant de l'hexadécimal plutôt que de l'ASCII :
Code:
Function Epurer(MaChaine As String) As Variant
Dim oRegExp As Object
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
    .Global = True
    .Pattern = "(\xA0)"
    If .test(MaChaine) = True Then MaChaine = .Replace(MaChaine, "")
End With
If MaChaine <> "" Then Epurer = MaChaine
End Function
A+
 
Dernière édition:

Jiheme

XLDnaute Accro
Re : Suppression d'espaces

Re à tous

MJ 13 : Ta macro ne fonctionne pas dans mon cas, car le fichier que j'importe est déjà un .xlsx, mais je garde précieusement car elle me servira dans d'autres cas de figure.

Efgé : C'est impecable juste ce dont j'ai besoin.

David : Ta fonction fonctionne, mais vu le nombre de cellule à traiter, car je récupère les paie par 30 ou 40, il faut que j'essaies de bidouiller pour transformer en macro pour traiter par lot. Mais pas le temps aujourd'hui.

Un grand merci à tous de vous être penché sur mon problème.

A+
 

Discussions similaires