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 🙄
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
	
	
	
	
	
		
	
		
			
		
		
	
				
			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