tortuegenie
Messages postés110Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention21 octobre 2008
-
3 avril 2006 à 15:58
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
3 avril 2006 à 18:02
Bonjour à tous, je souhaite rafraichir excel après avoir fait une méthode.
Voici le code:
Sub FR_Replace()
nMaxLine = (WorksheetFunction.CountA(Columns("b:b")))
For I = 2 To nMaxLine
test = Range("B" & I).Value
valueB = CStr(Range("B" & I).Value)
test = Replace(valueB, ",", ".")
Next I
End Sub
Cette fonction me permet de remplacer , par .
La variable test est à jour dans le déboggeur mais excel n'effectue pas le rafraichissement.
Comment rafraichir excel dans ma fonction.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 3 avril 2006 à 17:32
Effectivement, F5 = Atteindre et pas Actualiser dans Excel !
Par contre, l'histoire du point au lieu de la virgule, c'est à remplacer dans tes cellules ?
Si c'est le cas et si ça s'applique à tous tes nombres, changes les parametres régionaux de ton PC :
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 avril 2006 à 18:02
2 choses :
Quand tu parles de rafraîchir dans Excel, ça sous-entend qu'Excel refait tous les calculs.
C'est fait automatiquement si dans les options, onglet calcul, tu as bien coché : calcul automatique.
Sinon, ce n'est pas F5, mais F9 qui recalcule tout. Un SendKeys "{F9}" a donc plus de chance de fonctionner :p
Mais, et c'est mon 2ème point, le pb de ton code n'est pas un pb de raffraichissement :
Si je comprends bien le code ta boucle :
- Tu récupères le contenu d'une cellule dans une variable (test)
- Tu convertis ce contenu en texte dans une 2nde variable (au passage, c'est inutile, autant faire directement test=CStr(test)
- Tu remplaces dans ta 2nde variable le point par une virgule.
Et .. c'est tout.
A quel moment tu réinjectes ta variable dans la cellule ? En fait, Excel se rafraichit bien, c'est juste que tu ne lui fournis aucune donnée à changer.
Tu devrais rajouter à la fin de ta boucle : Range("B" & I).Value = test
Pour simplifier ta boucle, tu peux donc faire :
For I = 2 To nMaxLine
Range("B" & I).value = Replace(CStr(Range("B" & I).Value), ",", ".")
Next I
Dernière chose, Mortalino a raison, si c'est juste pour un pb de "." ou de "," dans les chiffres, c'est dans les paramètres régionaux que ça se change ^^.