Bonjour,
Mon ordinateur est configuré en langu Française, avec comme séparateur décimale le POINT ( . ).
J'ouvre un fichier EXCEL dans lequel le séparateur décimal a été mis en VIRGULE ( , ). Jusque là, aucun soucis, il détecte simplement les valeurs comme du texte, ce qui ne me dérange pas.
Soit un fichier ou X est la ligne et Y la colonne.
Dans mon fichier, j'ai des "NaN".
J'ai donc lancé une macro afin de les remplacer par la valeur "NaN" (présente en coordonnée X;Y )par celle de la cellule X-1;Y.
Celà donne donc :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Dim nb As Double
Dim i, x, y, x1 As Integer
Dim Terms As String
Terms = "NaN" '' Terme erreur numérique à remplacer
nb = Application.WorksheetFunction.CountIf(Columns("A:XFD"), Terms) '' On compte le nombre de cellule contenant la variable Terms
For a = 1 To nb
Cells.Find(What:=Terms, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
x = ActiveCell.Row
y = ActiveCell.Column
x1 = x - 1
Cells(x, y).value = Cells(x1, y).Value
Next a |
Si je met des chiffres à mes variables :
A l'initial :
Cells(x, y).value = NaN
Cells(x1, y).value = 160,12345
Post-lancement de la MACRO :
Cells(x, y).value = 16 012 345
Cells(x1, y).value = 160,12345
=> Vous voyez donc que la virgule a été supprimé... La virgule semble avoir été prise pour un séparateur des milliers... Ce qui ne m'arrange plus...
Afin de palier à ce soucis, j'ai donc remplacer la ligne de code "Cells(x, y).value = Cells(x1, y).Value" par les deux suivantes :
Cells(x1, y).Copy
Cells(x, y).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Cependant le temps de traitement est multiplié par 2... Ce qui est gênant au vu du nombre de colonnes que j'ai (A:XFD) et de lignes (800.000).
Ma question est donc de savoir comment palier à ce soucis dans ma MACRO sans avoir à modifier de paramètres Windows ou EXCEL ?
Merci par avance,
Fabrice.
Partager