Menu

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

fapfapfap - 16 févr. 2012 à 14:45 - Dernière réponse : sagessedz 4 Messages postés vendredi 19 mai 2017Date d'inscription 30 juin 2017 Dernière intervention
- 19 mai 2017 à 21:59
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 

20 réponses

pijaku 12205 Messages postés jeudi 15 mai 2008Date d'inscriptionContributeurStatut 13 septembre 2017 Dernière intervention - 22 févr. 2012 à 11:55
+2
Utile
4
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
Cette réponse vous a-t-elle aidé ?  
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?
pijaku 12205 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention > juguy - 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?
pijaku 12205 Messages postés jeudi 15 mai 2008Date d'inscriptionContributeurStatut 13 septembre 2017 Dernière intervention - 22 févr. 2012 à 15:03
+2
Utile
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
Cette réponse vous a-t-elle aidé ?  
chossette9 4429 Messages postés lundi 20 avril 2009Date d'inscriptionContributeurStatut 12 septembre 2014 Dernière intervention - 16 févr. 2012 à 14:48
0
Utile
2
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
0
Utile
3
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 ?
0
Utile
3
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 12205 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 20 janv. 2014 à 15:52
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
simo > adenZZ - 14 mai 2014 à 20:06
Oui exactement, c'est la bonne solution.
abousafia 1 Messages postés dimanche 5 mars 2017Date d'inscription 5 mars 2017 Dernière intervention - 5 mars 2017 à 11:04
0
Utile
2
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 4 Messages postés vendredi 19 mai 2017Date d'inscription 30 juin 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
sagessedz 4 Messages postés vendredi 19 mai 2017Date d'inscription 30 juin 2017 Dernière intervention - 19 mai 2017 à 21:59
Oh j'ai oublier
2 pour le format date nommez "Dates"