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 SubJe 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 IfY'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 ThenOn 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:=FalseSera remplacé par cela
With Worksheets("RésultatScanRapide")
.Range("I16") = .Range("O16")
'...
End WithUne 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 ifCela t'évitera le genre de problème que tu rencontre comme ici
Do
'...
'...
'...
ligne = ligne + 1
End If
Do While celvide = 0Où tu mets deux fois le Do
donc épures ton code et reviens nous voir