VBA convertir texte en nombre [Résolu/Fermé]

Signaler
-
Messages postés
4
Date d'inscription
vendredi 19 mai 2017
Statut
Membre
Dernière intervention
30 juin 2017
-
Bonjour,


j'ai dans mon documents une plage de cellules où des nombres sont stockés sous forme de texte...j'aimerais avoir quelques lignes de code VBA les convertissant en nombre pour pouvoir les utiliser dans des calculs.

Pourriez vous svp m'aider? (excel 2007)

merci d'avance :)

6 réponses

Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 494
Bonjour,
Par exemple, pour convertir A1:A10 en Nombres entiers :

Sub essai()
Dim Tabl(), i As Long
Tabl = Range("A1:A10")
For i = LBound(Tabl, 1) To UBound(Tabl, 1)
    Tabl(i, 1) = CInt(Tabl(i, 1)) 'remplacer CInt par CDbl si nombres décimaux
Next
Range("A1").Resize(UBound(Tabl, 1), 1) = Tabl
End Sub
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Merci, la méthode fonctionne mais uniquement sur la colonne une.

La plage a transformer dans mon cas contient 2 colonnes...

Pouvez vous encore m'indiquer la solution?

Merci encore pour l'aide précieuse!
En fait c'est bon, je vais simplement déclarer une autre variable et recopier les mêmes lignes à la suite.

Merci encore!!

ps: je n'arrive plus à passer le topic en résolu...si un modo pouvait s'en charger pour moi...
Bonjour pijaku, j'ai essayé ton code en remplaçant A10 par A50000 puisque j'ai plus de 30000 lignes, et j'obtiens une incompatibilité de type.
Aurais-tu une idée?
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 494 > juguy
Bonjour,

Dans les lignes vides, tu essaies de transformer "rien" en nombre entier. Cela ne peut pas fonctionner.
Cible ta dernière ligne remplie...

Autre idée, peut être que dans tes 30000 lignes s'est glissée une valeur autre que des nombres... Une lettre? Une erreur #N/A? Autre?
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 494
Ben en fait, non avec 1 variable tu en as assez...
Pour les colonnes A et B :
Sub essai()
Dim Tabl(), i As Long
Tabl = Range("A1:B10")
For i = LBound(Tabl, 1) To UBound(Tabl, 1)
    Tabl(i, 1) = CInt(Tabl(i, 1)) 'remplacer CInt par CDbl si nombres décimaux
    Tabl(i, 2) = CInt(Tabl(i, 2))
Next
Range("A1").Resize(UBound(Tabl, 1), 2) = Tabl
End Sub
Messages postés
4237
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 257
Bonjour,

pas besoin de macro :

1°) écrire 1 dans une cellule. Sélectionner la cellule et copier-là.
2°) Sélectionner la plage de cellules où les nombres sont stockés sous forme de texte.
3°) Utiliser le collage spécial - Multiplication pour que le texte devienne un nombre.

Cordialement.
merci,

mais en fait je compte intégrer ces lignes dans une macro déjà existante...

Je connais votre méthode malheureusement j'ai vraiment besoin de passer par une macro

merci
Je viens d'essayer la méthode et ca ne marche pas...j'ai toujours le petit triangle vert me disant que le contenu des cellules est au format texte.
j'ai utilisé votre méthode dans une macro:

Columns("M:N").Select
Selection.NumberFormat = "0.00"
Range("O3").Select
ActiveCell.FormulaR1C1 = "1"
Range("O3").Select
Selection.Copy
Range("M5:N277").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.ScrollRow = 269
ActiveWindow.ScrollRow = 267
ActiveWindow.ScrollRow = 266
ActiveWindow.ScrollRow = 264
ActiveWindow.ScrollRow = 262
ActiveWindow.ScrollRow = 258
ActiveWindow.ScrollRow = 255
ActiveWindow.ScrollRow = 251
ActiveWindow.ScrollRow = 247
ActiveWindow.ScrollRow = 243
ActiveWindow.ScrollRow = 238
ActiveWindow.ScrollRow = 235
ActiveWindow.ScrollRow = 231
ActiveWindow.ScrollRow = 229
ActiveWindow.ScrollRow = 226
ActiveWindow.ScrollRow = 222
ActiveWindow.ScrollRow = 219

etc etc...

D'où vient l'erreur svp??

Merci
Une idée s'il vous plaît!!!
Bonjour,

j'ai le même problème, manuellement le collage spécial transforme les valeurs en nombres mais ça ne fonctionne pas en vba... As-tu trouvé une solution ?

Merci d'avance,

Cordialement.
'transformation colonne b
Dim Tabl(), i As Long
Tabl = Range("B4:B33")
For i = LBound(Tabl, 1) To UBound(Tabl, 1)
Tabl(i, 1) = CInt(Tabl(i, 1))
Next
Range("B4").Resize(UBound(Tabl, 1), 1) = Tabl

'transformation colonne C
Dim Tabl1(), j As Long
Tabl1 = Range("c4:c33")
For j = LBound(Tabl1, 1) To UBound(Tabl1, 1)
Tabl1(j, 1) = CInt(Tabl1(j, 1))
Next
Range("c4").Resize(UBound(Tabl1, 1), 1) = Tabl1

Voila comment, j'ai fait pour traiter 2 colonnes
merci pour tout
il m'affiche un erreur'13' au niveau de Tabl(i, 1) = CInt(Tabl(i, 1))
que ce que je faire ?
mais moi il m'affiche un erreur au niveau de Tabl(i, 1) = CInt(Tabl(i, 1))
je ne sais pas si je dois changer quelque chose?
d'avance merci
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 494
Bonjour,
Quel est le message d'erreur?
merci pijaku j'ai utilisé excel direct avec la méthode basic convertir dans le menu donnée
bonne journée
> adenZZ
Oui exactement, c'est la bonne solution.
Messages postés
1
Date d'inscription
dimanche 5 mars 2017
Statut
Membre
Dernière intervention
5 mars 2017

sans utiliser de macro
les nombres sous forme de texte importé en tableau (a1:n300) dans la feuil1
dans la feuil2 a1=SUBSTITUE(Feuil1!A1;",";"."),recopier la formule jusqu’à ...
dan la feuil3 a1==ARRONDI(Feuil2!A1;2);recopier la formule jusqu’à ...
et les nombres dans la feuil3 sont converti
Messages postés
4
Date d'inscription
vendredi 19 mai 2017
Statut
Membre
Dernière intervention
30 juin 2017

salut
pour solutionner ce pblm il faut nommer les cellules à convertir puis utilisez le code VBA suivant:
1 pour le format nombre nommez "Montant"
puis voila le code

' convertir_TexteNombre Macro
Sub convertir_TexteNombre()
Range("Montant").Select
Selection.TextToColumns Destination:=Range("F2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End Sub

2 Pour les dates
' Convertir_TexteDate Macro

Sub Convertir_TexteDate()
Range("Dates").Select
Selection.TextToColumns Destination:=Range("H2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
End Sub

Bon courage
Messages postés
4
Date d'inscription
vendredi 19 mai 2017
Statut
Membre
Dernière intervention
30 juin 2017

Oh j'ai oublier
2 pour le format date nommez "Dates"