[VBA] Conversion nombre stocké texte en chiffre [Résolu]

Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 11:15 - Dernière réponse : spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention
- 2 déc. 2008 à 16:14
Bonjour,

J'exécute une macro permettant de copier une ligne d'un fichier excel dans une autre. La ligne copiée correspond à des valeurs numériques mais en copiant les nombres sont stockés sous formes de texte. J'ai écrit une macro pour faire la conversion mais cela ne semble pas fonctionner. J'ai fait du pas à pas tout s'exécute correctement sauf qu'à la fin mes nombres sont encore au format texte

voici la macro :

    If (Application.ActiveSheet.Cells(i - 1, 1).Value <> var) Then
        Application.Worksheets("base").Range("A" & i & ":" & "Y" & i).Select
        ActiveSheet.Paste
        'J'ai mis un 1 dabs ube cellule et je fais un collage special avec multiplication comme indiqué dans l'aide excel
        Application.Worksheets("base").Range("A1").Select
        Selection.Copy
        Range("B" & i & ":" & "Z" & i).Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False
        Application.Worksheets("base").Range("H" & i & ":" & "Z" & i).Select
        Selection.NumberFormat = "0.00%"
        Call MAJ_Feuille(i)
    Else
        MsgBox "Les valeurs ont déjà été intégrées au fichier", Buttons:=vbOKOnly, Title:="Erreur"
        On Error GoTo 0
    End If

est ce que qn aurait une idee pou resoudre ce problème?
Merci bien,
Afficher la suite 

12 réponses

Répondre au sujet
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 16:12
+3
Utile
Re Bonjour,

J'ai trouvé la solution, voila le code :

    If (Application.ActiveSheet.Cells(i - 1, 1).Value <> var) Then
        Application.Worksheets("base").Range("A" & i & ":" & "Y" & i).Select
        ActiveSheet.Paste
        Application.Worksheets("base").Range("B" & i & ":" & "Y" & i).Select
        For Each xCell In Selection
            xCell.Value = Replace(xCell.Value, ",", ".")
        Next xCell
        Call MAJ_Feuille(i)
   Then
          .....

En fait pour chaque cellule lue je remplace la virgule par un point sur toute ma selection et la valeur est considérée comme un nombre sans aucun arrondi.
Merci spirit33 de ton aide.
B.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Beurdge
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 12:56
0
Utile
Bonjour,

à la place de :
Selection.NumberFormat = "0.00%"

essaie ceci :
Selection.Style = "Percent"
Commenter la réponse de spirit33
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 13:27
0
Utile
Bonjour,

Le resultat est le meme j'ai toujours les valeurs en format texte...
Commenter la réponse de Beurdge
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 14:04
0
Utile
quelle version d'office tu utilise (2000, 2003, 2007, ...) ?
Commenter la réponse de spirit33
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 14:16
0
Utile
j'utilise 2003...ce que je comprends pas c'est que ma macro je l'ai crée en enregistrant l'action alors pourquoi manuellement ça marche mais pas avec la macro alors que l'action est la même (je ne sais pas si c'est très clair)
Commenter la réponse de Beurdge
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 15:01
0
Utile
en effet cela devrait fonctionner.
J'ai le même problème sur 2007, c pour ça que je voulais savoir ta version, mais sur 2003 je ne l'ai jamais eu c bizarre.

je vais faire quelque test.
si je n'ai pas mis de poste avant la fin de la journée, c'est que je n'aurais pas trouvé.
Commenter la réponse de spirit33
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 15:16
0
Utile
ok merci
Commenter la réponse de Beurdge
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 15:26
0
Utile
Bon j'ai trouvé une solution partielle :

    If (Application.ActiveSheet.Cells(i - 1, 1).Value <> var) Then
        Application.Worksheets("base").Range("A" & i & ":" & "Y" & i).Select
        ActiveSheet.Paste
        Application.Worksheets("base").Range("B" & i & ":" & "Y" & i).Select
        For Each xCell In Selection
             xCell.Value = Val(xCell.Text)
        Next xCell
        Application.Worksheets("base").Range("H" & i & ":" & "Y" & i).Select
        Selection.NumberFormat = "0.00%"
        Call MAJ_Feuille(i)
    Else
        MsgBox "Les valeurs ont déjà été intégrées au fichier", Buttons:=vbOKOnly, Title:="Erreur"
        On Error GoTo 0
    End If

Alors là le texte est bien changé en nombre mais des zeros sont rajoutés par exemple si ma valeur initiale est 94,00% elle devient 9400,00%. donc y a t'il un moyen d'ameliorer ca?
Commenter la réponse de Beurdge
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 15:36
0
Utile
il faut diviser par 100
Commenter la réponse de spirit33
Beurdge 9 Messages postés mercredi 4 juin 2008Date d'inscription 10 décembre 2008 Dernière intervention - 2 déc. 2008 à 15:39
0
Utile
euh oui mais le soucis c'est que si ma valeur initiale est 92,33 ça devient 9200,00 donc ca me l'arrondit automatiquement.
Commenter la réponse de Beurdge
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 16:10
0
Utile
dans l'option format de la cellule, tu devrais pouvoir mettre le pourcentage avec 2chiffres après la virgule.
Commenter la réponse de spirit33
spirit33 26 Messages postés mercredi 14 novembre 2007Date d'inscription 24 juillet 2009 Dernière intervention - 2 déc. 2008 à 16:14
0
Utile
dsl pas mis le code vba :
cellls(x,y) = format(cells(i,a), "0.00")
Commenter la réponse de spirit33

Vous n'êtes pas encore membre ?

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

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 et codes sources.

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