XL 2019 Bloc if sans End If

Pieerre69

XLDnaute Junior
Bonjour la communauté !

J'ai fais un petit programme, mais Excel me dit qu'il y a un bloc If sans bloc End If.. Je me suis empressé de relire attentivement le code pour trouver cette petite faute mais j'ai rien trouvé, et je me dis que ça vient sûrement d'autre part. Surtout qu'il m'affiche le bloc End Sub....

Une idée ? (ci-joint le code)
VB:
Sub lancement_cde()

'déclaration des variables
Dim nbligne As Integer
Dim wb1 As Workbook
Dim Fichier, Wrep, Saisie, stock, vert, orange, rouge As String
Dim TDates
Dim Lig As Long
Saisie = "HEKIPIA - Demande d'approvisionnement.xlsm"
Set wbDA = Workbooks(Saisie)
    ' Interrompt la mise à jour de l'écran. Ca accélère l'exécution du code
Application.ScreenUpdating = False
    'déverrouillage feuilles
For i = 1 To 3
Sheets(i).Unprotect Password:=123
Next
Sheets("Données").Visible = True
Sheets("Interface").Visible = True
If MsgBox("Avez-vous terminé de saisir ?", vbYesNo, "Confirmation de saisie") = vbNo Then
    MsgBox ("Veuillez continuer la saisie")
    Exit Sub
End If
    'compteur ligne jusqu'à erreur code article
Lig = 3 'première ligne à vérifier
Do While Not IsError(Sheets("Saisie").Range("B" & Lig)) Or IsEmpty(Sheets("Saisie").Range("B" & Lig))
    Lig = Lig + 1
Loop
    'si colonne A vide au niveau du compteur, ne rien faire
If Not (IsEmpty(Sheets("Saisie").Range("A" & Lig))) Then
    If MsgBox("Attention, la ligne " & Lig & " comporte une erreur." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Veuillez vérifier que l'article existe", vbOKOnly, "Erreur : Code PMI") = vbOK Then
        Exit Sub
    End If
End If
    'compteur ligne jusqu'à erreur code fournisseur
Lig = 3
Do While Not IsError(Sheets("Saisie").Range("H" & Lig))
    Lig = Lig + 1
Loop
    'si colonne A vide au niveau du compteur, ne rien faire
If Not (IsEmpty(Sheets("Saisie").Range("A" & Lig))) Then
    If MsgBox("Attention, la ligne " & Lig & " comporte une erreur." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Veuillez vérifier que le fournisseur existe ou que l'article a été bien renseigné", vbOKOnly, "Erreur : Code Fournisseur") = vbOK Then
        Exit Sub
    End If
End If
    'comptage de la dernière ligne remplie
nbligne = Worksheets("Saisie").Range("A" & Rows.Count).End(xlUp).Row - 2
    'Recup data :
    'société
Worksheets("Interface").Range("A2:A" & nbligne + 1).Value = "100"
    'code art + cc
Worksheets("Interface").Range("D2:E" & nbligne + 1).Value = Worksheets("Saisie").Range("C3:D" & nbligne + 2).Value
    'qté commandé
Worksheets("Interface").Range("F2:F" & nbligne + 1).Value = Worksheets("Saisie").Range("E3:E" & nbligne + 2).Value
    'code fournisseur
Worksheets("Interface").Range("B2:B" & nbligne + 1).Value = Worksheets("Saisie").Range("H3:H" & nbligne + 2).Value
    'ref commande
Worksheets("Interface").Range("C2:C" & nbligne + 1).Value = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Year(Date) & "-" & Format(Time, "hhnnss")
    'Libellé 1
Worksheets("Interface").Range("G2:G" & nbligne + 1).Value = Worksheets("Données").Range("D2:D" & nbligne + 1).Value
    'Libellé 2
Worksheets("Interface").Range("H2:H" & nbligne + 1).Value = Worksheets("Données").Range("E2:E" & nbligne + 1).Value
    'PU
Worksheets("Interface").Range("I2:I" & nbligne + 1).Value = Worksheets("Données").Range("J2:J" & nbligne + 1).Value
    'Délai
If nbligne > 1 Then
    TDates = Worksheets("Saisie").Range("G3:G" & nbligne + 2)
    For i = 1 To UBound(TDates, 1)
        TDates(i, 1) = Format(TDates(i, 1), "yyyymmdd")
    Next i
    Else
    Worksheets("Interface").Range("J2") = Worksheets("Saisie").Range("G3")
    'Etat stock KB
For i = 2 To nbligne + 1
    vert = Sheets("Interface").Range("K" & i).Select
    orange = Sheets("Interface").Range("M" & i).Select
    rouge = Sheets("Interface").Range("O" & i).Select
    With Sheets("Interface")
        .FormulaR1C1 = "=XLOOKUP(RC[-7],Données!C[-9],Données!C[1],"""",0)"
    End With
    stock = Sheets("Saisie").Range("F" & i + 1)
    If stock = "V" Then
        With Sheets("Interface")
            .Range("K" & i) = "V"
            .Range("L" & i) = Sheets("Saisie").Range("E" & i + 1)
        End With
        Else
        If stock = "O" Then
            With Sheets("Interface")
                .Range("M" & i) = "V"
                .Range("N" & i) = Sheets("Saisie").Range("E" & i + 1)
            End With
            Else
            If stock = "R" Then
                With Sheets("Interface")
                    .Range("O" & i) = "V"
                    .Range("P" & i) = Sheets("Saisie").Range("E" & i + 1)
                End With
            End If
        End If
    End If
Next
    ' Sauvegarde du fichier Interface
    ' Copie la feuille active dans un nouveau fichier
Worksheets("Interface").Copy
    ' Définition du chemin complet. Pourrait être remonté avec les autres définitions pour plus de lisibilité
Fichier = "\\GI-ERP\Data\100\Cde Four - Import\1 - Cde Achat\EDI INTEGRATION.xlsx"
    ' Enregistrement du fichier selon le chemin défini
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Fichier
Application.DisplayAlerts = True
    ' Fermeture du nouveau classeur sans confirmation
Workbooks(2).Close False
    'Création du fichier de synchro des états kanban
Call importkb
    'Verrouillage des feuilles
For i = 1 To 3
Sheets(i).Protect Password:=123
Next
    ' Ré-actualisation de l'affichage.
Application.ScreenUpdating = True
    ' lancement programme Intégration des données
    ' lancement du BAT
Attente.Show
Wrep = MsgBox("Création de la commande dans PMI", vbOKOnly)

End Sub
 

Pounet95

XLDnaute Occasionnel
Bonjour,
J'ai ré indenté à mon habitude, et c'est je crois une inversion entre un Next et un End If qui est la cause de l'erreur
Vois avec ça

Claude alias Pounet95

VB:
Sub lancement_cde()

'déclaration des variables
Dim nbligne As Integer
Dim wb1 As Workbook
Dim Fichier, Wrep, Saisie, stock, vert, orange, rouge As String
Dim TDates
Dim Lig As Long
Saisie = "HEKIPIA - Demande d'approvisionnement.xlsm"
Set wbDA = Workbooks(Saisie)
    ' Interrompt la mise à jour de l'écran. Ca accélère l'exécution du code
Application.ScreenUpdating = False
    'déverrouillage feuilles
For i = 1 To 3
Sheets(i).Unprotect Password:=123
Next
Sheets("Données").Visible = True
Sheets("Interface").Visible = True
If MsgBox("Avez-vous terminé de saisir ?", vbYesNo, "Confirmation de saisie") = vbNo Then
    MsgBox ("Veuillez continuer la saisie")
    Exit Sub
End If
    'compteur ligne jusqu'à erreur code article
Lig = 3 'première ligne à vérifier
Do While Not IsError(Sheets("Saisie").Range("B" & Lig)) Or IsEmpty(Sheets("Saisie").Range("B" & Lig))
    Lig = Lig + 1
Loop
    'si colonne A vide au niveau du compteur, ne rien faire
If Not (IsEmpty(Sheets("Saisie").Range("A" & Lig))) Then
    If MsgBox("Attention, la ligne " & Lig & " comporte une erreur." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Veuillez vérifier que l'article existe", vbOKOnly, "Erreur : Code PMI") = vbOK Then
        Exit Sub
    End If
End If
    'compteur ligne jusqu'à erreur code fournisseur
Lig = 3
Do While Not IsError(Sheets("Saisie").Range("H" & Lig))
    Lig = Lig + 1
Loop
    'si colonne A vide au niveau du compteur, ne rien faire
If Not (IsEmpty(Sheets("Saisie").Range("A" & Lig))) Then
    If MsgBox("Attention, la ligne " & Lig & " comporte une erreur." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Veuillez vérifier que le fournisseur existe ou que l'article a été bien renseigné", vbOKOnly, "Erreur : Code Fournisseur") = vbOK Then
        Exit Sub
    End If
End If
    'comptage de la dernière ligne remplie
nbligne = Worksheets("Saisie").Range("A" & Rows.Count).End(xlUp).Row - 2
    'Recup data :
    'société
Worksheets("Interface").Range("A2:A" & nbligne + 1).Value = "100"
    'code art + cc
Worksheets("Interface").Range("D2:E" & nbligne + 1).Value = Worksheets("Saisie").Range("C3:D" & nbligne + 2).Value
    'qté commandé
Worksheets("Interface").Range("F2:F" & nbligne + 1).Value = Worksheets("Saisie").Range("E3:E" & nbligne + 2).Value
    'code fournisseur
Worksheets("Interface").Range("B2:B" & nbligne + 1).Value = Worksheets("Saisie").Range("H3:H" & nbligne + 2).Value
    'ref commande
Worksheets("Interface").Range("C2:C" & nbligne + 1).Value = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Year(Date) & "-" & Format(Time, "hhnnss")
    'Libellé 1
Worksheets("Interface").Range("G2:G" & nbligne + 1).Value = Worksheets("Données").Range("D2:D" & nbligne + 1).Value
    'Libellé 2
Worksheets("Interface").Range("H2:H" & nbligne + 1).Value = Worksheets("Données").Range("E2:E" & nbligne + 1).Value
    'PU
Worksheets("Interface").Range("I2:I" & nbligne + 1).Value = Worksheets("Données").Range("J2:J" & nbligne + 1).Value
    'Délai
If nbligne > 1 Then
    TDates = Worksheets("Saisie").Range("G3:G" & nbligne + 2)
    For i = 1 To UBound(TDates, 1)
        TDates(i, 1) = Format(TDates(i, 1), "yyyymmdd")
    Next i
    Else
    Worksheets("Interface").Range("J2") = Worksheets("Saisie").Range("G3")
    'Etat stock KB
For i = 2 To nbligne + 1
    vert = Sheets("Interface").Range("K" & i).Select
    orange = Sheets("Interface").Range("M" & i).Select
    rouge = Sheets("Interface").Range("O" & i).Select
    With Sheets("Interface")
        .FormulaR1C1 = "=XLOOKUP(RC[-7],Données!C[-9],Données!C[1],"""",0)"
    End With
    stock = Sheets("Saisie").Range("F" & i + 1)
    If stock = "V" Then
        With Sheets("Interface")
            .Range("K" & i) = "V"
            .Range("L" & i) = Sheets("Saisie").Range("E" & i + 1)
        End With
        Else
        If stock = "O" Then
            With Sheets("Interface")
                .Range("M" & i) = "V"
                .Range("N" & i) = Sheets("Saisie").Range("E" & i + 1)
            End With
            Else
            If stock = "R" Then
                With Sheets("Interface")
                    .Range("O" & i) = "V"
                    .Range("P" & i) = Sheets("Saisie").Range("E" & i + 1)
                End With
            End If
        End If
    End If
Next
    ' Sauvegarde du fichier Interface
    ' Copie la feuille active dans un nouveau fichier
Worksheets("Interface").Copy
    ' Définition du chemin complet. Pourrait être remonté avec les autres définitions pour plus de lisibilité
Fichier = "\\GI-ERP\Data\100\Cde Four - Import\1 - Cde Achat\EDI INTEGRATION.xlsx"
    ' Enregistrement du fichier selon le chemin défini
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Fichier
Application.DisplayAlerts = True
    ' Fermeture du nouveau classeur sans confirmation
Workbooks(2).Close False
    'Création du fichier de synchro des états kanban
Call importkb
    'Verrouillage des feuilles
For i = 1 To 3
Sheets(i).Protect Password:=123
Next
    ' Ré-actualisation de l'affichage.
Application.ScreenUpdating = True
    ' lancement programme Intégration des données
    ' lancement du BAT
Attente.Show
Wrep = MsgBox("Création de la commande dans PMI", vbOKOnly)

End Sub
 

Pounet95

XLDnaute Occasionnel
Salut Pierrejean
Encore un post "inutile" puisque tu as déjà répondu mais que ce n'était pas indiqué tant dans le compteur de réponses, que dans l'affichage après ouverture.
Il a fallu que je commence à écrire pour qu'un message d'alerte me soit proposé !!!
Je ne sais pas si un j'aurais la réponse à ce problème ?

Claude
En gras ma modification pour éviter que ce soit toi "le responsable de la chose"
 

Discussions similaires

Haut Bas