Bonjour.

voici mon code.
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
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
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