Signaler

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

Posez votre question fapfapfap - Dernière réponse le 19 mai 2017 à 21:59 par sagessedz
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 :)
Afficher la suite 
Utile
+4
plus moins
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
Utile
+2
plus moins
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
fapfapfap- 22 févr. 2012 à 14:07
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!
fapfapfap- 22 févr. 2012 à 14:11
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...
juguy- 21 mai 2015 à 10:20
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?
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 9 mars 2017 Dernière intervention - 21 mai 2015 à 13:31
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?
Utile
+0
plus moins
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.
fapfapfap- 16 févr. 2012 à 14:55
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
fapfapfap- 17 févr. 2012 à 14:41
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
Utile
+0
plus moins
Une idée s'il vous plaît!!!
White- 22 févr. 2013 à 00:15
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.
ptimoun- 10 avril 2013 à 16:00
'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
morjen- 23 déc. 2014 à 18:52
merci pour tout
il m'affiche un erreur'13' au niveau de Tabl(i, 1) = CInt(Tabl(i, 1))
que ce que je faire ?
Utile
+0
plus moins
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
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 9 mars 2017 Dernière intervention - 20 janv. 2014 à 15:52
Bonjour,
Quel est le message d'erreur?
adenZZ- 20 janv. 2014 à 15:57
merci pijaku j'ai utilisé excel direct avec la méthode basic convertir dans le menu donnée
bonne journée
simo- 14 mai 2014 à 20:06
Oui exactement, c'est la bonne solution.
Utile
+0
plus moins
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
sagessedz 2Messages postés vendredi 19 mai 2017Date d'inscription 19 mai 2017 Dernière intervention - 19 mai 2017 à 21:57
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
Répondre
sagessedz 2Messages postés vendredi 19 mai 2017Date d'inscription 19 mai 2017 Dernière intervention - 19 mai 2017 à 21:59
Oh j'ai oublier
2 pour le format date nommez "Dates"
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !