Bonjour à tous !
Après beaucoup de recherche sur le net je n'ai malheureusement pas trouvé mon bonheur...
J'espère que vous pourrez m'aider !
Je vous explique :
Dans un fichier excel, je met une cellule en couleur (verte RGB(0, 200, 20) ou rouge RGB(215, 20, 0)). Ce qui me permet de savoir si la ligne a déjà été traité ou non.
Normalement je fais un traitement ligne par ligne au fur et à mesure mais si il y a une erreur sur une ligne, elle passe en rouge et devra être traité lors d'une prochaine mise à jour.
Mon but est donc de rechercher les lignes dont les cellule de la colonne A est en rouge. Ca fonctionne avec une boucle qui vérifie les lignes une par une mais j'essai d'optimiser le temps de traitement alors j'ai eu l'idée de passer par un .Find mais là ça ne fonctionne plus.
Voici un bout de mon code (qui ne fonctionne pas au niveau du .Find) :
Voici celui qui fonctionne mais qui prend un peu trop de temps :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DlgAppels = Range("E" & Rows.Count).End(xlUp).Row + 1 Set c = Workbooks("Appels.xlsm").Worksheets("Appels").Range("A3:A" & DlgAppels) _ .Find((Application.FindFormat.Interior.Color = RGB(215, 20, 0)), LookAt:=xlPart, SearchFormat:=True) If Not c Is Nothing Then LigneRouge = c.Row Range("A" & LigneRouge).Select Selection.EntireRow.Columns("A:O").Copy
Merci à tous ceux qui auraient une idée à me proposer.
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
26
27
28
29
30
31
32
33
34 ' For i = 3 To Dlg ' If Range("A" & i).Interior.Color = RGB(215, 20, 0) Then ' Range("A" & i).Select ' Selection.EntireRow.Columns("A:O").Copy ' collage des lignes après la dernière ligne saisie dans appelsXXXX ' Workbooks(AppelsXXXX).Activate ' If Range("D" & Rows.Count).End(xlUp).Row + 1 Then ' Dlg = Range("E" & Rows.Count).End(xlUp).Row + 1 ' Do While Rows(Dlg).Hidden ' Dlg = Dlg + 1 ' Loop ' Range("A" & Dlg).Select ' End If ' collage spécial des valeurs ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipBlanks:=False, Transpose:=False ' passer la cellule A en vert ' Workbooks("Appels.xlsm").Activate ' Selection.EntireRow.Columns("A").Interior.Color = RGB(0, 200, 20) ' End If ' Next
Partager