manipuler des chiffres en VBA - enlever des espaces

  • Initiateur de la discussion Petipeton
  • Date de début
P

Petipeton

Guest
Bonjour à tous !

Quel plaisir de vous retrouver, vous, les non vacanciers... comme moi, vous travaillez très certainement pendant que d'autres se dorent au soleil !!!

Voilà ma requête : j'ai récupéré un rapport un peu crado... celui-ci me renvoie des chiffres avec, en séparateur de milliers, un espace malvenu pour Excel qui du coup, ne l'interprète plus bien du tout.

Exemple : 458 215 963

J'aimerai avoir une petite macro (je n'arrive pas à faire fonctionner mon embryon de machin) qui permette de transformer le chiffre précédent en un chiffre sans séparateur de milliers :

Exemple : 458215963.

Merci beaucoup ! Et n'oubliez pas, si ça vous paraît simplissime, les débutants de mon âge y perdent leur latin !!!

Bises à tous.

Petipeton
 
P

pyrof

Guest
bonjour,


Voici une petite solution

Macro :
Sub blancout()

l = ActiveCell().Row
c = ActiveCell().Column
While Cells(l, c) <> ""
Cells(l, c).Value = Replace(Cells(l, c), " ", "")
Cells.NumberFormat = "General"
l = l + 1
Wend
End Sub


place ton curseur sur la cellule et lance la macro


bon courrage
 
P

Petipeton

Guest
Merci beaucoup de ta réponse.

Malheureusement, ça ne marche pas.

Ca fait un peu comme mon code d'ailleurs... ça donne un peu n'importe quoi sur les cellules qui contiennent des heures et ça ne fait rien sur celles qui contiennent les chiffres que je veux modifier.

Merci quand même ! Je vais voir si ton code peut fonctionner pour autre chose que j'avais aussi à faire (et que je reportais depuis trop longtemps déjà, l'occasion fait le larron !).

Petipeton
 
P

PhiBou

Guest
Bonjour Petitpeton, pyrof, le Forum

En partant sur l'hypothèse que tes nombres sont entiers (comme tu nous le présentes)

Feuille : =CNUM(SUBSTITUE(A1;" ";))

VBA : ActiveCell.NumberFormat = "0"


Où, plus général, élimination des caractères différents de chiffres :

Sub Recherche_Nombre()
Dim Actuel as String
Dim Retour as String
Dim i as Integer
Actuel = ActiveCell.Value
Retour = ""
For i = 1 To Len(Actuel)
If Asc(Mid(Actuel, i, 1)) > 47 And Asc(Mid(Actuel, i, 1)) < 58 Then
Retour = Retour & Mid(Actuel, i, 1)
End If
Next i
ActiveCell.Value = Val(Retour)
End Sub

Bonne journée

PhiBou
 
P

pyrof

Guest
Bonjour,

Je ne sais pas, moi quand j'ai ce type de problème, je fais macro enregistrer, je fais toutes les actions qu j'ai besoin, ensuite je regarde la macro et j'en reitre le nécessaire

bon courrage
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin