Microsoft 365 Accélération du traitement par variable tableau

  • Initiateur de la discussion Initiateur de la discussion DanB34
  • Date de début Date de début

DanB34

XLDnaute Nouveau
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 :rolleyes:

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
 

Pièces jointes

Discussions similaires

Réponses
40
Affichages
2 K
Réponses
3
Affichages
557

Statistiques des forums

Discussions
315 290
Messages
2 118 079
Membres
113 425
dernier inscrit
trautti