Bonjour,
Je remercie les personnes qui m'ont aidées à la réalisation de cette boucle, car j'avais bloqué dès le début. Bref, le but de celle-ci est de repérer dans une colonne ne contenant que des valeurs numériques :
=> Les cellules dont le premier caractère de gauche est différent de 6 ou 7.
Si c'est le cas, alors pour toutes les cellules dont la valeur a un nombre de caractères > 5, alors on supprime la ligne entière.
=> Sinon, pour les cellules dont le 1er caractère est un 6 ou un 7, alors si le nombre de caractères contenu dans cette cellule est = 5 ET que ces 5 caractères sont les mêmes que les 5 permiers caractères de la cellule d'en dessous, alors on supprime la ligne entière également.
J'espère que c'est assez clair, et voilà le bout de code écrit :
Je suis sûr que j'en ai écrit une tartine alors que quelques lignes auraient été possibles. Pourriez-vous me donner des tuyaux d'optimisation afin de me faire progresser SVP ?
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
18
19
20
21
22
23
24
25 Sub Test() Application.ScreenUpdating = False With Sheets("Original data") Dim i As Long, Acc As String For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1 Acc = Len(.Cells(i, 1)) If Left(.Cells(i, 1), 1) <> "6" And Left(.Cells(i, 1), 1) <> "7" Then If Acc > 5 Then .Cells(i, 1).EntireRow.Delete End If Else If Acc = 5 Then If Left(.Cells(i, 1), 5) = Left(.Cells(i + 1, 1), 5) Then .Cells(i, 1)).EntireRow.Delete End If End If End If Next i End With Application.ScreenUpdating = True End Sub
Merci d'avance !
Partager