Beurdge
Messages postés9Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention10 décembre 2008
-
2 déc. 2008 à 11:15
spirit33
Messages postés26Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention24 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,
A voir également:
Vba convertir nombre en texte
Nombre stocké sous forme de texte vba - Meilleures réponses
Nombre stocké sous forme de texte - Meilleures réponses
Beurdge
Messages postés9Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention10 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.
Beurdge
Messages postés9Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention10 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)
spirit33
Messages postés26Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention24 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é.
Beurdge
Messages postés9Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention10 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?