End If sans bloc If impossible à solutionner

Bonjour,

J'ai un morceau de code que je n'arrive pas à faire fonctionner, il me donne l'erreur suivante : "End If sans bloc If". Alors que j'ai bien l'impression d'avoir un bloc if...

Voici le code :

Dim valeur As String
Dim cellule
Dim celvide
Dim ligne
Dim test

valeur = "Worksheets(""ScanRap"").Cells(17, 9)"
celvide = 0
ligne = 5
test = 0

If Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("D20").Value Then
    cellule = Sheets("Paramètres").Range("C22").Value
    Sheets("ListeProduits").Select
    Range(cellule).Select
ElseIf Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("E20").Value And _
    Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("D20").Value Then

     Worksheets("RésultatScanRapide").Range("I16") = "Non"
     Sheets("RésultatScanRapide").Select
     Range("O16").Select
      Selection.Copy
      Range("I16").Select
      Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
           SkipBlanks:=False, Transpose:=False
       Range("I16").Select
      Sheets("Formulaire").Select
      Range("D16").Select
      Selection.Copy
     Sheets("RésultatScanRapide").Select
      Range("I16").Select
     Sheets("ScanRap").Select
      Range("I17").Select
      Selection.Copy
      Sheets("Formulaire").Select
       Range("F6").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
     MsgBox "Aucune entrée détéctée"
ElseIf Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("E20").Value Then
    Do
        Sheets("ListeProduits").Select
        test = Sheets("ListeProduits").Range("E" & ligne).Value

        If test = "" Then celvide = 1
        If valeur = test Then
            Range("B" & ligne & ":" & "I" & ligne).Select
            Selection.Copy
            Sheets("RésultatScanRapide").Select
            Rows("29:29").Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Range("T29").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        ligne = ligne + 1
        Do While celvide = 0
End If
End Sub

Je vous remercie Infiniment de l'aide que vous m'apporterez.
Belle soirée.

Bien cordialement.

Bonjour,

If valeur =test then

Dans la boucle do loop n'a pas de endif...

@ bientôt

LouReeD

Bonjour,

Je suis vraiment grand débutant, je ne comprends pas exactement, désolé si je passe pour un grand débutant, mais j'ai corrigé comme ça :

Sub ScanRapide()
Dim valeur As String
Dim cellule
Dim celvide
Dim ligne
Dim test

valeur = "Worksheets(""ScanRap"").Cells(17, 9)"
celvide = 0
ligne = 5
test = 0

If Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("D20").Value Then
    cellule = Sheets("Paramètres").Range("C22").Value
    Sheets("ListeProduits").Select
    Range(cellule).Select
ElseIf Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("E20").Value And _
    Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("D20").Value Then

     Worksheets("RésultatScanRapide").Range("I16") = "Non"
     Sheets("RésultatScanRapide").Select
     Range("O16").Select
      Selection.Copy
      Range("I16").Select
      Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
           SkipBlanks:=False, Transpose:=False
       Range("I16").Select
      Sheets("Formulaire").Select
      Range("D16").Select
      Selection.Copy
     Sheets("RésultatScanRapide").Select
      Range("I16").Select
     Sheets("ScanRap").Select
      Range("I17").Select
      Selection.Copy
      Sheets("Formulaire").Select
       Range("F6").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
     MsgBox "Aucune entrée détéctée"
ElseIf Worksheets("Paramètres").Range("B16").Value = Worksheets("Paramètres").Range("E20").Value Then
    Do
        Sheets("ListeProduits").Select
        test = Sheets("ListeProduits").Range("E" & ligne).Value

        If test = "" Then
            celvide = 1
        End If
        If valeur = test Then
            Range("B" & ligne & ":" & "I" & ligne).Select
            Selection.Copy
            Sheets("RésultatScanRapide").Select
            Rows("29:29").Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Range("T29").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        ligne = ligne + 1
        End If
    Do While celvide = 0
End If

Y'a-t-il quelque chose que je n'ai pas compris ?

Et j'ai toujours la même erreur :/

Merci d'avance.
@ bientôt

Bonjour à tous,

Commissaire > il faut orienter ton enquête sur les boucles initiées par "Do" ...

Cours VBA : les boucles (excel-pratique.com)

ric

Salut,

Houlala cela sent l'enregistreur de macro tout cela...Bon tu peux déjà utiliser les blocs With ... End With pour Alléger ton code

With Worksheets("Paramètres")
    If .Range("B16").Value = .Range("D20").Value Then
        cellule = Sheets("Paramètres").Range("C22").Value
        Sheets("ListeProduits").Select
        Range(cellule).Select

    ElseIf .Range("B16").Value = .Range("E20").Value And _
           .Range("B16").Value = .Range("D20").Value Then

On ne le redira jamais assez ne pas faire de select sauf si nécessaire par exemple ceci

Sheets("RésultatScanRapide").Select
     Range("O16").Select
     Selection.Copy
     Range("I16").Select
     Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                               SkipBlanks:=False, Transpose:=False

Sera remplacé par cela

        With Worksheets("RésultatScanRapide")
            .Range("I16") = .Range("O16")
            '...
        End With

Une bonne habitude à prendre c'est d'écrire l’entièreté de l'instruction exemple

Do

Loop
' // Ou
Do

Loop While celvide = 0
' // Ou
If

End if

Cela t'évitera le genre de problème que tu rencontre comme ici

   Do
'...
'...
'...
    ligne = ligne + 1
        End If
    Do While celvide = 0

Où tu mets deux fois le Do

donc épures ton code et reviens nous voir

Rechercher des sujets similaires à "end bloc impossible solutionner"