Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

En VBA je n'arrive pas à convertir des cellules de texte en nombre!

2,198 views
Skip to first unread message

Fred

unread,
May 10, 2010, 4:41:38 PM5/10/10
to
Bonjour,
En VBA excel 2003, suite à l'importation de données d'une page Web vers une feuillle excel j'ai des cellules remplies de ce qui semble être du texte, mais que je ne parviens pas à convertir en nombre!!!
J'ai supprimé les espaces dans la cellule avec :
For Each cellule In Selection
cellule.Value = LTrim(cellule.Value)
Next
puis
s = Replace(Range("A1").Value, " ", "")
J'ai tenté :
Range("B1").Select
Selection.NumberFormat = "General"
ou
Selection.NumberFormat = "# ##0.00" ou Selection.NumberFormat = "0.00"
Rien n'y fait...j'ai tjours le point d'exclamation (le nbre dans cette cellule est au format texte...)
Pourtant il suffit que je clique sur la barre de formule pour que la cellule se convertisse en nombre!
Je ne comprends, que dois-je faire en vba pour convertir les celulles textes importées du web en nombre?
En vous remerciant pour votre aide

JB

unread,
May 10, 2010, 5:14:36 PM5/10/10
to

Fred

unread,
May 10, 2010, 6:05:19 PM5/10/10
to
Merci bcp JB
J'ai avanc� avec ce tableau de conversion; j'ai choisi pour mon cas de
figure (chiffre avec ",") ce code
For Each c In Selection
c.Value = Val(Replace(c.Text, ",", "."))
Next c
Mais j'ai encore un souci avec du texte avec le signe % (ex : 9,66%)
Je vais chercher sur les autres conversions du tableau...mais je ne vois pas
ce cas l�!


"JB" <boisg...@hotmail.com> a �crit dans le message de
news:29c2640d-b2cd-4890...@l28g2000yqd.googlegroups.com...
Bonsoir;

http://boisgontierjacques.free.fr/pages_site/Conversion.htm

JB

On 10 mai, 22:41, "Fred" <sama...@free.fr> wrote:
> Bonjour,

> En VBA excel 2003, suite � l'importation de donn�es d'une page Web vers
> une feuillle excel j'ai des cellules remplies de ce qui semble �tre du
> texte, mais que je ne parviens pas � convertir en nombre!!!
> J'ai supprim� les espaces dans la cellule avec :


> For Each cellule In Selection
> cellule.Value = LTrim(cellule.Value)
> Next
> puis
> s = Replace(Range("A1").Value, " ", "")

> J'ai tent� :


> Range("B1").Select
> Selection.NumberFormat = "General"
> ou
> Selection.NumberFormat = "# ##0.00" ou Selection.NumberFormat = "0.00"
> Rien n'y fait...j'ai tjours le point d'exclamation (le nbre dans cette
> cellule est au format texte...)
> Pourtant il suffit que je clique sur la barre de formule pour que la
> cellule se convertisse en nombre!
> Je ne comprends, que dois-je faire en vba pour convertir les celulles

> textes import�es du web en nombre?

JB

unread,
May 11, 2010, 1:02:46 AM5/11/10
to
Bonjour,

Il faudrait poster une PJ avec un échantillon.

JB


On 11 mai, 00:05, "Fred" <sama...@free.fr> wrote:
> Merci bcp JB

> J'ai avancé avec ce tableau de conversion; j'ai choisi pour mon cas de


> figure (chiffre avec ",") ce code
> For Each c In Selection
> c.Value = Val(Replace(c.Text, ",", "."))
> Next c
> Mais j'ai encore un souci avec du texte avec le signe % (ex : 9,66%)
> Je vais chercher sur les autres conversions du tableau...mais je ne vois pas

> ce cas là!
>
> "JB" <boisgont...@hotmail.com> a écrit dans le message denews:29c2640d-b2cd-4890...@l28g2000yqd.googlegroups.com...


> Bonsoir;
>
> http://boisgontierjacques.free.fr/pages_site/Conversion.htm
>
> JB
>
> On 10 mai, 22:41, "Fred" <sama...@free.fr> wrote:
>
>
>
> > Bonjour,

> > En VBA excel 2003, suite à l'importation de données d'une page Web vers
> > une feuillle excel j'ai des cellules remplies de ce qui semble être du
> > texte, mais que je ne parviens pas à convertir en nombre!!!
> > J'ai supprimé les espaces dans la cellule avec :


> > For Each cellule In Selection
> > cellule.Value = LTrim(cellule.Value)
> > Next
> > puis
> > s = Replace(Range("A1").Value, " ", "")

> > J'ai tenté :


> > Range("B1").Select
> > Selection.NumberFormat = "General"
> > ou
> > Selection.NumberFormat = "# ##0.00" ou Selection.NumberFormat = "0.00"
> > Rien n'y fait...j'ai tjours le point d'exclamation (le nbre dans cette
> > cellule est au format texte...)
> > Pourtant il suffit que je clique sur la barre de formule pour que la
> > cellule se convertisse en nombre!
> > Je ne comprends, que dois-je faire en vba pour convertir les celulles

> > textes importées du web en nombre?
> > En vous remerciant pour votre aide- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -

Fred

unread,
May 11, 2010, 6:41:14 AM5/11/10
to
Je ne sais pas si le fichier joint est ok...je laisse un lien pour le
t�l�charger
http://garlon.free.fr/conversion.xls
Merci


"Fred" <sam...@free.fr> a �crit dans le message de
news:%23foV3rO...@TK2MSFTNGP06.phx.gbl...
> Je joins mon bout de macro...en feuill3 les donn�es format texte que je
> copie sur feuil1...la valeur en % reste en format texte et non en nombre
> malgr� le code
> Merci pour votre aide


>
>
> "JB" <boisg...@hotmail.com> a �crit dans le message de

> news:85616cb4-7e99-4e75...@l31g2000yqm.googlegroups.com...
> Bonjour,
>
> Il faudrait poster une PJ avec un �chantillon.


>
> JB
> On 11 mai, 00:05, "Fred" <sama...@free.fr> wrote:
>> Merci bcp JB

>> J'ai avanc� avec ce tableau de conversion; j'ai choisi pour mon cas de


>> figure (chiffre avec ",") ce code
>> For Each c In Selection
>> c.Value = Val(Replace(c.Text, ",", "."))
>> Next c
>> Mais j'ai encore un souci avec du texte avec le signe % (ex : 9,66%)
>> Je vais chercher sur les autres conversions du tableau...mais je ne vois
>> pas

>> ce cas l�!
>>
>> "JB" <boisgont...@hotmail.com> a �crit dans le message


>> denews:29c2640d-b2cd-4890...@l28g2000yqd.googlegroups.com...
>> Bonsoir;
>>
>> http://boisgontierjacques.free.fr/pages_site/Conversion.htm
>>
>> JB
>>
>> On 10 mai, 22:41, "Fred" <sama...@free.fr> wrote:
>>
>>
>>
>> > Bonjour,

>> > En VBA excel 2003, suite � l'importation de donn�es d'une page Web vers
>> > une feuillle excel j'ai des cellules remplies de ce qui semble �tre du
>> > texte, mais que je ne parviens pas � convertir en nombre!!!
>> > J'ai supprim� les espaces dans la cellule avec :


>> > For Each cellule In Selection
>> > cellule.Value = LTrim(cellule.Value)
>> > Next
>> > puis
>> > s = Replace(Range("A1").Value, " ", "")

>> > J'ai tent� :


>> > Range("B1").Select
>> > Selection.NumberFormat = "General"
>> > ou
>> > Selection.NumberFormat = "# ##0.00" ou Selection.NumberFormat = "0.00"
>> > Rien n'y fait...j'ai tjours le point d'exclamation (le nbre dans cette
>> > cellule est au format texte...)
>> > Pourtant il suffit que je clique sur la barre de formule pour que la
>> > cellule se convertisse en nombre!
>> > Je ne comprends, que dois-je faire en vba pour convertir les celulles

>> > textes import�es du web en nombre?


>> > En vous remerciant pour votre aide- Masquer le texte des messages

>> > pr�c�dents -
>>
>> - Afficher le texte des messages pr�c�dents -
>

michdenis

unread,
May 11, 2010, 6:57:37 AM5/11/10
to
Bonjour,

A ) dans une cellule vide, tu inscris le chiffre 1
B ) copie cette cellule (celle contenant le chiffre 1) dans le presse-papier
C ) s�lectionne toutes les cellules num�riques dont tu veux modifier l'affichage
D ) Commande : Collage sp�ciale : Valeur seulement - coche Multiplication

Voil�.

"Fred" <sam...@free.fr> a �crit dans le message de groupe de discussion :
eKqBBaP8...@TK2MSFTNGP04.phx.gbl...

Fred

unread,
May 11, 2010, 7:14:54 AM5/11/10
to
Merci Michdenis...
Mais en vba comment fait-on?
J'ai essay� avec l'enregistreur de macro...�a ne fonctionne pas!!!

"michdenis" <mich...@hotmail.com> a �crit dans le message de
news:u5idHjP8...@TK2MSFTNGP06.phx.gbl...

michdenis

unread,
May 11, 2010, 7:52:38 AM5/11/10
to
Adapte le nom de la feuille et de la plage de cellules.
(plage ayant des donn�es num�riques)
'----------------------------------
Sub test()
Dim A as Long, B as Long, X as variant
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("B1:c2")
.Replace "%", "", xlPart
.Replace Chr(160), "", xlPart
.Replace " ", "", xlPart
x = .Value
For a = 1 To UBound(x, 1)
For b = 1 To UBound(x, 2)
If x(a, b) <> "" Then
x(a, b) = CDbl(x(a, b))
End If
Next
Next
.NumberFormat = "General"
.Value = x
End With
End With
Application.ScreenUpdating = True
End Sub
'----------------------------------


"Fred" <sam...@free.fr> a �crit dans le message de groupe de discussion :

u08JysP...@TK2MSFTNGP02.phx.gbl...

Fred

unread,
May 11, 2010, 8:06:03 AM5/11/10
to
Encore merci Michdenis...Ca fonctionne effectivement...
Le seul petit souci c'est que pour convertir la cellule (comprenant X,xx%)
de texte en nombre il faut supprimer le caract�re %...
Y aurai-il d'autres solutions...
Merci bcp tout de m�me ;)

"michdenis" <mich...@hotmail.com> a �crit dans le message de

news:%23na52BQ...@TK2MSFTNGP02.phx.gbl...

michdenis

unread,
May 11, 2010, 8:12:59 AM5/11/10
to
Dans le fichier que tu as publi�, tout fonctionne incluant
la cellule affichant -2,38%

Si les donn�es de ton fichier originales sont diff�rentes du
fichier que tu as publi�... c'est ton probl�me !

"Fred" <sam...@free.fr> a �crit dans le message de groupe de discussion :

O8LYXJQ8...@TK2MSFTNGP06.phx.gbl...

Fred

unread,
May 11, 2010, 11:49:24 AM5/11/10
to
Ok �a fonctionne mais le caract�re % a bien disparu...lorsque je teste mon
fichier!
J'ai simplement rajouter ceci :
Range("C2").Select 'Cellule avec le caract�re %
V = Range("C2").Value
P = 100
Range("C2").Value = V / P
Selection.NumberFormat = "0.00%"
En vous remerciant...

"michdenis" <mich...@hotmail.com> a �crit dans le message de

news:%23xYJPNQ...@TK2MSFTNGP06.phx.gbl...

michdenis

unread,
May 11, 2010, 12:43:49 PM5/11/10
to

| Ok �a fonctionne mais le caract�re % a bien disparu...

C'est normal. La macro que je te propose traite toute la plage
de cellule que tu lui pr�sentes et applique en autre ceci :
qui remplace le symbole % par ""


.Replace "%", "", xlPart

La m�me proc�dure affecte le format standard � l'ensemble de
la plage de cellule :
.NumberFormat = "General"

Si tu as diverses colonnes, dont certaines doivent recevoir un format
particulier, tu fais 2, 3 ou plus des boucles sur ces diff�rentes colonnes
et tu appliques le format de ton choix.

Il est impossible de construire une macro qui va appliquer diff�rents
formats sans boucler...

L'objectif de la proc�dure �tait de faire passer le contenu des cellules et
le format des cellules en format standard d'abord. Dans un second temps,
tu peux ajouter quelques lignes de code pour mettre certaines colonnes
au format pourcentage. Sauf que la macro fonctionne, elle remplit le r�le
pour lequel elle fut cr��e.

Fred

unread,
May 11, 2010, 1:13:16 PM5/11/10
to
J'avais bien compris que l'objectif de la macro �tait de faire passer la
place de cellules concern�es du format texte en format nombre standard.
Sachant que j'avais des cellules avec le caract�re particulier %...il
fallait que je trouve une boucle qui permette de le r�cup�rer..
Encore merci pour tous ces �claircissements et explications!

"michdenis" <mich...@hotmail.com> a �crit dans le message de

news:6340DEDC-DBEA-4ED1...@microsoft.com...

michdenis

unread,
May 11, 2010, 1:33:19 PM5/11/10
to
La macro aurait pu s'�crire comme ceci pour tenir compte des "%".
Si la plage est tr�s grande, c'est un peu plus long...

'--------------------------------------
Sub test()
Dim A As Long, B As Long, X As Variant
Application.ScreenUpdating = False
With Worksheets("Feuil2")


With .Range("B1:c2")

.Replace Chr(160), "", xlPart
.Replace " ", "", xlPart

X = .Value
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
If X(A, B) <> "" Then
If Right(X(A, B), 1) = "%" Then
X(A, B) = CDbl(Left(X(A, B), Len(X(A, B)) - 1)) / 100
.Item(A, B).NumberFormat = "0.00%"
Else
X(A, B) = CDbl(X(A, B))
.Item(A, B).NumberFormat = "General"
End If
End If
Next
Next
.Value = X


End With
End With
Application.ScreenUpdating = True
End Sub

'--------------------------------------


"Fred" <sam...@free.fr> a �crit dans le message de groupe de discussion :
#1rSC1S8...@TK2MSFTNGP02.phx.gbl...

0 new messages