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

Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
- - Dernière réponse : spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
- 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 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
3
Merci
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.

Dire « Merci » 3

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

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Beurdge
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
Bonjour,

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

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

Le resultat est le meme j'ai toujours les valeurs en format texte...
Commenter la réponse de Beurdge
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
quelle version d'office tu utilise (2000, 2003, 2007, ...) ?
Commenter la réponse de spirit33
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
0
Merci
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
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
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
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
0
Merci
ok merci
Commenter la réponse de Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
0
Merci
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
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
il faut diviser par 100
Commenter la réponse de spirit33
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Dernière intervention
10 décembre 2008
0
Merci
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
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
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
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Dernière intervention
24 juillet 2009
0
Merci
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.