Bonjour à tous ou rebonjour suivant les correcteurs

Je reviens avec un petit souci lié à mon incompétence,
j'ai le code ci-dessous si je mets Next il me fait le message d'erreur Next sans For si je l'enlève, il me met For ans Next... il m'énerve un peu...
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
For lA = 24 To np - 1
    'Valeur des différents cas à chercher
 
        cas1 = "Blanc"
        cas2 = "xxxx0"
        cas3 = 0
 
        'Cherche la valeur dans la feuille P2, en colonne B
 
        Set Rcas1 = shD.Columns(1).Find(What:=cas1, LookAt:=xlPart)
        Set Rcas2 = shD.Columns(1).Find(What:=cas2, LookAt:=xlPart)
        Set Rcas3 = shD.Columns(1).Find(What:=cas3, LookAt:=xlPart)
 
    'Action à effectuer selon valeur
            If Not Rcas1 Is Nothing Then
       Range("U21:AG21").Copy Cells(lA, 1)
            If Not Rcas2 Is Nothing Then
       Range("U24:AG24").Copy Cells(lA, 1)
            If Not Rcas3 Is Nothing Then
       Range("U20:AG20").Copy Cells(lA, 1)
 
    End If
 Next lA

Là je mets le code complet au cas où...

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Sub Modifmercatog()
 
Dim wbS As Workbook, wbModif As Workbook
Dim shS As Worksheet, shM As Worksheet, shD As Worksheet
Dim RModVal As String, N_Client As String, FichModif As String
Dim RMod As Range, Rdp1 As String, Plag As Range, Rnp As Range
Dim np As Integer, x As Integer, compt As Integer, lA As Integer
Dim Rcas1 As Range, Rcas2 As Range, Rcas3 As Range
Dim cas1 As String, cas2 As String, cas3 As integer
 
Set wbS = Workbooks.Open("Z:\Gestion entreprise\VBA\Atest\CC2011T.xlsx")
Set shS = wbS.Worksheets("Pilote1")
shS.Activate
 
On Error Resume Next
Set RMod = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
On Error GoTo 0
 
If Not RMod Is Nothing Then
    RMod.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    RModVal = RMod(1, 1).Value
    N_Client = shS.Cells(RMod.Row, 8).Value
    FichModif = RModVal & " " & N_Client & ".xls"
 
    'Ici fonction qui permet de vérifier si FichModif est ouvert dans la même instance Excel
 
    If Existe(FichModif) Then
        Set wbModif = Workbooks(FichModif)
        Set shM = wbModif.Worksheets("Devis")
        Set shD = ThisWorkbook.Worksheets("Devis")
 
       '---------------------------compter le nombre de ligne entre A23 et A(Pied de page)
 
       Set Plag = shM.Range("A24:A500")
 
 For Each Rnp In Plag
    If Rnp.Value = "Pieddepage" Then
    np = Rnp.Row
    x = np - 23
  End If
Next
       '------------------------------------insérer les lignes dans shD
       If x > 33 Then
       For compt = 1 To x - 33
       shD.Protect userinterfaceonly:=True
       shD.Activate
        shD.Range(Cells(24, 1), Cells(24, 14)).Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
       Range("U22:AH22").Copy shD.Cells(24, 1)
 
    Next
    End If
 
    '-----------Copier entre la ligne 23 et la ligne np les cellules colonne A de shM
    shM.Activate
    shM.Range(Cells(24, 1), Cells(np - 1, 1)).Copy shD.Range("A24")
 
 
    '---------- Appeler les macros en fonctions des valeurs colonne A de shD
    shD.Activate
 
    'On balaye la colonne A de shD
 
 
For lA = 24 To np - 1
    'Valeur des différents cas à chercher
 
        cas1 = "Blanc"
        cas2 = "xxxx0"
        cas3 = 0
 
        'Cherche la valeur dans la feuille P2, en colonne B
 
        Set Rcas1 = shD.Columns(1).Find(What:=cas1, LookAt:=xlPart)
        Set Rcas2 = shD.Columns(1).Find(What:=cas2, LookAt:=xlPart)
        Set Rcas3 = shD.Columns(1).Find(What:=cas3, LookAt:=xlPart)
 
    'Action à effectuer selon valeur
            If Not Rcas1 Is Nothing Then
       Range("U21:AG21").Copy Cells(lA, 1)
            If Not Rcas2 Is Nothing Then
       Range("U24:AG24").Copy Cells(lA, 1)
            If Not Rcas3 Is Nothing Then
       Range("U20:AG20").Copy Cells(lA, 1)
 
    End If
 Next lA
 
 
 
 
 
    '-----------Copier entre la ligne 23 et la ligne np la plage de cellules colonne C à G
 
    '  copier shM dans la nouvelle sauvegarde, et dans le cas d'une modification de devis copier en rouge l'adresse
    '  de shM dans les classeurs d'archivage pour que les doublons soit supprimés par la suite.
 
        Set wbModif = Nothing
        Set shM = Nothing
        Set shD = Nothing
    End If
End If
 
Set RMod = Nothing
Set shS = Nothing
wbS.Close False
Set wbS = Nothing
End Sub
 
Private Function Existe(ByVal Fich As String) As Boolean
Dim Wb As Workbook
 
For Each Wb In Application.Workbooks
    If Wb.Name = Fich Then
        Existe = True
        Exit For
    End If
Next Wb
End Function
Merci aux courageux.