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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.