Bug, Macro-changement ./, !!!

S

sabine

Guest
Bonjour tout le monde,

Je remets ce problème déjà explicité dans un message précédent au cas où le subject vous plaît mieux ;-) !!
"J'ai un autre problème mais qui je pense est un bug. Je dois remplacer dans la colonne dont je veux faire la somme, tous les points du fichier texte par des virgules pour que les valeurs soient reconnues comme chiffres. Je le fait mais quand c'est dans la macro, il fait le remplacement mais ne considère pas pour autant les valeurs comme des chiffres (alors que les propriétés des cellules ont été correctement configurées), par contre, quand je le fait manuellement ou dans un enregistrement de macro, ça marche, mais dès que je réexécute la macro enregistrée, ça ne marhce plus !!! Etrange, non ?? Quelqu'un saurait-il éclairer ma lanterne ? Merci,"

Sabine
 
S

sousou

Guest
Bonjour sabine

L'utilisation du menu format directement dans ta feuille fait plusieurs choses même si c'est invisible.
Elle change le format (affichage) et transforme la chaine de caractères en véritable nombre pour excel.
Dans une macro tu dois effectuer cette transformation, sinon les valeurs resteront des chaines de caractères.


Médite l'exemple ci-dessous cela devrait t'aider.

Sub test()
Columns(1).Replace what:=";", Replacement:="."
For Each i In ActiveSheet.UsedRange
i = Val(i)
Next
End Sub
 
S

sabine

Guest
Merci pour ta réponse. Je vois ce que tu veux dire en effet mais par contre, je ne situe pas tès bien comment régler le problème. J'ai insérer ta ligne de commande mais du coup plus rien ne marche, il me mets à la compilation ; "Compilation errror: For without Next".
En fait, si je dois appliquer ta méthode à mon cas, je dois sélectionner la colonne et puis faire les changements, ça donne qulque chose comme ça :

Columns("E:E").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Columns("E:E").Select
For Each i In Selection.UsedRange
i = Val(i)
Selection.NumberFormat = "0.00"

Je suppose que ce que tu m'as conseillé ne peux pas être mis comme ça, mais alors, comment ?
Merci,

Sabine
 
S

sousou

Guest
Columns("E:E").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

activesheet.usedrange.Columns("E:E").Select
For Each i In Selection
i = Val(i)
Selection.NumberFormat = "0.00"
 
S

sabine

Guest
Je viens de regarder dans le doc et d'essayer mais j'ai toujours la même erreur. il seble que ça lui pose problème au démarrage de la macro. Il va à "End sub" et me mets "For without Next" et "Sub nom de ma macro" est surligné en jaune fluo. Je ne vois pas trop en quoi la ligne supplémentaire pose problème. Tu as une idée ?
 
S

salim

Guest
Bonjour le Fil et le Forum

Alors à mon avis Sabine tu es en train d'utiliser une boucle
"For Each....Next"

Je suis pas très fort en anglais mais " For without Next " te signale que tu doit rajouter "Next" sinon c'est pas une boucle "For Each .....Next" si il n'y a pas " Next "

Tiens nous au courant

@+ salim
 
S

sabine

Guest
Merci Salim, c'était bien ça, il manquait le Next. Cela dit, même si je n'ai plus de message d'erreur, mais valeurs ne sont toujours pas considérées comme des chiffres et donc non utilisables dans la somme.
De plus, j'ai comme variable dans ma somme, une cellule dont je ne connais pas la position car elle est fonction de la taille du fichier de départ qui peut changer. Donc pour résoudre ce problème, j'ai nommer la dernière cellule contenant une valeur et je voudrais faire une somme de la première valeur (de position connue) à la dernière. j'ai écris comme ça :

ActiveCell.FormulaR1C1 = "=SUM(e10:nom)"

mais ça ne marche pas, je suppose que c'est juste une question de syntaxe mais ... je cherche, je cherche ....
Merci pour les pistes passées et futures ;-)
 

Discussions similaires