Bonjour,
Le mieux étant l'ennemi du bien, je cherche à gagner du temps sur l'exécution d'une macro, plus par envie de progresser que par nécessité absolue, même s'il est arrivé que certains fichiers comportent plus de 200.000 lignes de données et nécessitent un temps de traitement conséquent.
L'idée étant de supprimer les espaces invisibles, retours chariot... dans les cellules à travers une variable tableau.
Mais, j'ai des problèmes de connexions de neurones qui ne me facilitent pas la vie
J'avais 2 idées :
1. passer par une variable tableau pour accélérer le traitement
2. ne traiter que les cellules comportant des caractères invisibles
Il est même sûrement possible de faire les 2 ?
Voici le code ci-dessous. Je joins aussi un fichier avec 3 boutons :
- Reset : remplis les cellules
- OK : supprime les espaces en double, triple... les retours chariot... -> fonctionne, mais peut être long
- KO : est sensé fonctionner par le biais d'une variable tableau, mais rien ne fonctionne correctement.
Merci d'avance pour le temps passé et les idées apportées.
Dan
VB:
Sub Nettoyer_Cars_Invisibles_Tableau()
Dim Tablo As Variant
Dim CelDepAdresse, CelArvAdresse, PlageDonnees As String
Dim c As Range
Dim car, tmp, i As Long
Dim rep As String
CelDepAdresse = Range("B13").Address
'Dernière cellule de la plage
Range(Split(ActiveSheet.UsedRange.Address, ":")(1)).Select
CelArvAdresse = ActiveCell.Address
PlageDonnees = Range(CelDepAdresse & ":" & CelArvAdresse).Address
Range(PlageDonnees).Select
Tablo = Range(PlageDonnees)
car = Array(8, 10, 13, 160)
Set Tablo = Range(PlageDonnees)
'MsgBox Tablo.Address
For Each c In Tablo
tmp = c.Value
For i = 0 To UBound(car)
tmp = Replace(tmp, Chr(car(i)), " ")
Next i
c = Application.Trim(tmp)
Next c
Range(PlageDonnees) = Tablo
End Sub
Bonjour Sylvanu,
Je suis toujours bluffé par la différence de vitesse de traitement.
En tout cas, bravo et un grand merci pour cette proposition impeccable !
Bonne soirée
Dan