Bonjour.
voici mon code.
l'objectif est de parcourir la colonne D de la feuille 2 et de vérifier si je retrouve la valeur dans la colonne a de la feuille1
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Dim Lig1 As Integer Dim Lig2 As Integer Dim NbLig1 As Integer Dim NbLig2 As Integer Dim NbRef2 As Integer Dim Trouve As Boolean Dim Ref1 As String Dim Ref2 As String Dim WkBk As Workbook Dim WkSh1 As Worksheet Dim WkSh2 As Worksheet Set WkBk = Workbooks(NomFic) Set WkSh1 = WkBk.Sheets(1) Set WkSh2 = WkBk.Sheets(2) Lig1 = 2 Lig2 = 2 NbLig1 = WkSh1.Cells(Rows.Count, 1).End(xlUp).Row WkSh2.Sort.SortFields.Clear If WkSh2.FilterMode Then WkSh2.ShowAllData NbLig2 = WkSh2.Cells(Rows.Count, 1).End(xlUp).Row WkSh2.Sort.SortFields.Clear WkSh2.Range("A1:F" & NbLig2).Sort WkSh2.Range("D1"), xlAscending, , , , , , xlYes WkSh2.Activate While Lig2 <= NbLig2 Lig1 = 2 Trouve = False Ref2 = WkSh2.Range("d" & Lig2) While Lig1 <= NbLig1 And Not Trouve Application.StatusBar = Ref2 & " (" & Lig2 & ")" Trouve = WkSh1.Range("a" & Lig1).Value = Ref2 Lig1 = Lig1 + 1 Wend If not Trouve Then MainWkSh.Range("b" & MainNbLig) = """" & Ref2 & """ n'est pas dans la feuille 1" MainNbLig = MainNbLig + 1 End If Lig2 = Lig2 + 1 While WkSh2.Range("d" & Lig2) = Ref2 And WkSh2.Range("d" & Lig2) <> "" Lig2 = Lig2 + 1 Wend Wend Application.StatusBar = Null Set WkSh1 = Nothing Set WkSh2 = Nothing Set WkBk = Nothing
Comme j'ai beaucoup de doublons dans la feuille 2, j'ai mis une petite "optimisation" qui ne fonctionne que pour autant que j'ai appliqué mon tri.
Certaines variables sont globales, ce qui explique qu'on ne trouve pas leur déclaration dans le code.
Il fonctionne correctement sur tous mes fichiers sauf un sur lequel il n'enlève pas les filtres et n'effectue pas le tri.
Les fichiers sont tous de la même la même forme et un autre fichier du même auteur que celui qui me pose problème fonctionne très bien.
J'ai cherché partout et testé différentes choses, en vain.
Le seul moment où je parviens à faire fonctionner le code avec ce fichier, c'est lorsque j'introduis une pause et que je clique sur la feuille du fichier incriminé avant de relancer le traitement.
Quelqu'un aurait-il une idée du pourquoi du comment de la chose ?
Merci de votre aide
Partager