Macro Excel qui fige Excel à son lancement
Bonjour à tous,
j'ai un petit soucis avec une macro, je m'explique :
J'ai développé une macro qui permet de nettoyer un onglet (appelé Remises) d'un fichier, c'est à dire que la personne va venir copier/coller 5 colonnes de données dans cet onglet (à savoir, les colonnes de données proviennent d'autres fichier mais peu importe).
La macro permet d'enlever la couleur si des cases sont surlignées, de supprimer les colonnes et lignes vides, de remettre les colonnes A,B,C,D et E au bon format, c'est à dire en standard avec en plus la colonne D sans séparateur de millier, mais visiblement le format standard suffit pour cette colonne et enfin elle permet d'afficher en rouge les doublons des 3 premières colonnes (et cela est très important) à l'aide d'une boucle.
La macro fonctionne parfaitement sur un fichier test où il y a 86 lignes, en revanche pour le gros fichier (179 000 lignes) qui va être régulièrement utilisé, Excel se fige et je suis obligé de fermer Excel sans résultat du coup...
Voici la Macro :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Sub Nettoyage_Fichier_CSV_BdC()
Dim col, nbCells, i, j
Sheets("Remises").Select
Sheets("Remises").Activate
On Error Resume Next
'Réinitialiser couleur de remplissage
Columns.Interior.ColorIndex = xlNone
'Supprimer colonnes vides
Cells.Range("A1:AZ1").SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
'Supprimer Lignes vides
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'Format colonnes A,B,C et D + Standard et colonne D sans millier
Columns("A:E").Select
Selection.NumberFormat = "General"
'Gestion des Doublons
données = "/"
lignes = "/"
doublon = ""
i = 2
Do While i < Range("A" & Rows.Count).End(xlUp).Row + 1
If données Like "*/" & Range("A" & i) & Range("B" & i) & Range("C" & i) & "/*" Then
doublon = "Doublon"
Range("A" & i, "C" & i).Interior.ColorIndex = 3
ligne = Split(lignes, "/")(UBound(Split(Split(données, Range("A" & i) & Range("B" & i) & Range("C" & i))(0), "/")))
Range("A" & ligne, "C" & ligne).Interior.ColorIndex = 3
Else
données = données & Range("A" & i) & Range("B" & i) & Range("C" & i) & "/"
lignes = lignes & i & "/"
End If
i = i + 1
Loop
If doublon = "Doublon" Then MsgBox ("vous avez des Doublons ! ils sont indiqués sur fond rouge")
If doublon <> "Doublon" Then MsgBox ("Vous n'avez pas de doublon ! ")
ActiveWorkbook.Save
Range("A1").Select
End Sub |
Plusieurs questions :
Suis-je obligé de passer par une boucle pour afficher les doublons en rouge des 3 premières colonnes ?
Est-ce la boucle qui fait planter Excel ?
Avez-vous une solution qui me permet de faire fonctionner cette macro peu importe le nombre de ligne ?
Je vous remercie par avance pour tout retour qui me permettrait d'avancer.
Cordialement.