Next sans for VBA Excel
guillaumegh
Messages postés
10
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit problème sous Excel 2003, lors de la compilation.. le message "next sans for" s'affiche.
Je ne comprends pas du tout car jusqu'à hier, ça tournait encore parfaitement, et je ne l'ai pas tant que ça modifié!
Voilà mon code :
Function b2()
Dim repertoire As String
Dim fichier As String
Dim l As Integer
Dim i As Integer
Dim j As Integer
Application.DisplayAlerts = False
repertoire = "C:\Documents and Settings\FX056065\Bureau\Stage\Analyse existant\Contrôles\Fichiers controles + formalismes\TOUS LES FICHIERS CONTROLE"
fichier = ""
For l = 1 To 345
fichier = Sheets("Feuil1").Cells(l, 2).Value
If fichier <> "" And Cells(l, 3).Value <> "" Then
ChDir repertoire
Workbooks.Open Filename:=repertoire & "\" & fichier 'ouvre le fichier
Windows(fichier).Activate 'le met à l écran
'suite de tests
For i = 15 To 25
For j = 2 To 3
If Sheets(1).Cells(2, 1).Value = "Désignation :" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 1"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 8).Value = "Désignation" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 2"
ElseIf Sheets(1).Cells(2, 3).Value = "Désignation" And Sheets(1).Cells(3, 3).Value = "Référence" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 3"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 17).Value <> 1 And Sheets(1).Cells(1, 29).Value = "" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 17).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4bis"
ElseIf Sheets(1).Cells(2, 3).Value = "REFERENCE: " And Sheets(1).Cells(1, 3).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4tierce"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(2, 15).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-4"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(2, 17).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-5"
ElseIf Sheets(1).Cells(2, j).Value = "REFERENCE: " And Sheets(1).Cells(2, i).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-i"
Cells(l, 4).Value = j
Cells(l, 5).Value = i
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(6, 1).Value = 1 Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 5"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "LOT " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 6"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 29).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 8"
ElseIf Sheets(1).Cells(1, 3).Value = "OF n°" And Sheets(1).Cells(1, 28).Value = "N° piece" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 9"
End If
Next j
Next i
Windows("Type de formalisme.xls").Activate
Windows(fichier).Activate
ActiveWindow.Close 'ferme le fichier
Next l
End Function
Merci d'avance
J'ai un petit problème sous Excel 2003, lors de la compilation.. le message "next sans for" s'affiche.
Je ne comprends pas du tout car jusqu'à hier, ça tournait encore parfaitement, et je ne l'ai pas tant que ça modifié!
Voilà mon code :
Function b2()
Dim repertoire As String
Dim fichier As String
Dim l As Integer
Dim i As Integer
Dim j As Integer
Application.DisplayAlerts = False
repertoire = "C:\Documents and Settings\FX056065\Bureau\Stage\Analyse existant\Contrôles\Fichiers controles + formalismes\TOUS LES FICHIERS CONTROLE"
fichier = ""
For l = 1 To 345
fichier = Sheets("Feuil1").Cells(l, 2).Value
If fichier <> "" And Cells(l, 3).Value <> "" Then
ChDir repertoire
Workbooks.Open Filename:=repertoire & "\" & fichier 'ouvre le fichier
Windows(fichier).Activate 'le met à l écran
'suite de tests
For i = 15 To 25
For j = 2 To 3
If Sheets(1).Cells(2, 1).Value = "Désignation :" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 1"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 8).Value = "Désignation" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 2"
ElseIf Sheets(1).Cells(2, 3).Value = "Désignation" And Sheets(1).Cells(3, 3).Value = "Référence" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 3"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 17).Value <> 1 And Sheets(1).Cells(1, 29).Value = "" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 17).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4bis"
ElseIf Sheets(1).Cells(2, 3).Value = "REFERENCE: " And Sheets(1).Cells(1, 3).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4tierce"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(2, 15).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-4"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(2, 17).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-5"
ElseIf Sheets(1).Cells(2, j).Value = "REFERENCE: " And Sheets(1).Cells(2, i).Value = "REFERENCE: " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 4-i"
Cells(l, 4).Value = j
Cells(l, 5).Value = i
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(6, 1).Value = 1 Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 5"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "LOT " Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 6"
ElseIf Sheets(1).Cells(2, 2).Value = "REFERENCE: " And Sheets(1).Cells(1, 2).Value = "N° OF:" And Sheets(1).Cells(1, 29).Value = "N° OF:" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 8"
ElseIf Sheets(1).Cells(1, 3).Value = "OF n°" And Sheets(1).Cells(1, 28).Value = "N° piece" Then
Workbooks("Type de formalisme.xls").Activate
Cells(l, 3).Value = "Type 9"
End If
Next j
Next i
Windows("Type de formalisme.xls").Activate
Windows(fichier).Activate
ActiveWindow.Close 'ferme le fichier
Next l
End Function
Merci d'avance
5 réponses
-
Bonjour,
C'est pas forcément un For ou un next qui manque. Cela peut être un End If....
Mais comme ton code est illisible, à toi de trouver.
Petit conseil toutefois, Indente ton code.
Exemple non indenté :For i = 1 to 18 For j = 3 to 5 If cells(i, 1) = 3 Then Cells(i, j) = "AB" Else Cells(i, j) = "ZE" End If nextj next i
même exemple indenté :For i = 1 to 18 For j = 3 to 5 If cells(i, 1) = 3 Then Cells(i, j) = "AB" Else Cells(i, j) = "ZE" End If nextj next i
Ok?
Sinon, dans ton code :For l = 1 To 345 fichier = Sheets("Feuil1").Cells(l, 2).Value If fichier <> "" And Cells(l, 3).Value <> "" Then 'bla bla bla Next j Next i Windows("Type de formalisme.xls").Activate Windows(fichier).Activate ActiveWindow.Close 'ferme le fichier Next l
Doukilé le End If de If en gras???