[VBA] Conversion nombre stocké texte en chiffre

Résolu
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008
- 2 déc. 2008 à 11:15
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
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,

12 réponses

Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 16:12
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.
3
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 12:56
Bonjour,

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

essaie ceci :
Selection.Style = "Percent"
0
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 13:27
Bonjour,

Le resultat est le meme j'ai toujours les valeurs en format texte...
0
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 14:04
quelle version d'office tu utilise (2000, 2003, 2007, ...) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 14:16
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)
0
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 15:01
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é.
0
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 15:16
ok merci
0
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 15:26
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?
0
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 15:36
il faut diviser par 100
0
Beurdge
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
10 décembre 2008

2 déc. 2008 à 15:39
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.
0
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 16:10
dans l'option format de la cellule, tu devrais pouvoir mettre le pourcentage avec 2chiffres après la virgule.
0
spirit33
Messages postés
26
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
24 juillet 2009

2 déc. 2008 à 16:14
dsl pas mis le code vba :
cellls(x,y) = format(cells(i,a), "0.00")
0