For sans next, next sans for, end if manquant où est l'erreur
Bonjour,
Ci-joint un code sur lequel je me casse les dents depuis maintenant quelques heures...
L'idée est que lorsque l'utilisateur clique sur la cellule correspondant à sa ligne en colonne H, la macro effectue une vérification des données entrées sur sa ligne et lui attribue un score.
colonne A vide
colonne B nom
colonne C n° de référence de l'objet recherché par l'utilisateur
colonne D heure de début de recherche
colonne E heure de fin de recherche
Colonne F durée de la recherche
Colonne G Code de l'objet trouvé par l'utilisateur
Colonne H Déclenchement de la vérification mettant en relation "C", "F", "G" et attribuant le score en conséquence.
J'ai essayé plusieurs agencement malheureusement j'ai systématiquement des erreur de type for sans next, next sans for ou bloc if sans end if et je ne parviens pas à retrouver la bonne syntaxe...
Si vous pouviez me dire où ça coince et encore mieux pourquoi je vous en serais très reconnaissant !
Je vous joint le code dans sa version "initiale" tel que je l'avais rédigé au départ.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 32
If Not Intersect(Target, Cells(i, 2)) Is Nothing Then UserForm1.Show 'nom de l'élève
If Not Intersect(Target, Cells(i, 3)) Is Nothing Then UserForm2.Show 'n° de balise recherchée
If Not Intersect(Target, Cells(i, 4)) Is Nothing Then Target.Value = Time ' heure de depart
If Not Intersect(Target, Cells(i, 5)) Is Nothing Then Target.Value = Time ' heure de retour
If Not Intersect(Target, Cells(i, 8)) Is Nothing Then 'vérification des éléments pour la balise :
'balise 1
If Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value = "00:02:00" Then
UserForm3c.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value < "00:01:59" Then
UserForm3.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value > "00:02:00" Then
UserForm3b.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value = "" Then
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value <> "IVAF" Then
UserForm4.Show
Next
End If
End Sub
d'avance merci !!
Hello,
Teste comme ça
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 32
If Not Intersect(Target, Cells(i, 2)) Is Nothing Then UserForm1.Show 'nom de l'élève
If Not Intersect(Target, Cells(i, 3)) Is Nothing Then UserForm2.Show 'n° de balise recherchée
If Not Intersect(Target, Cells(i, 4)) Is Nothing Then Target.Value = Time ' heure de depart
If Not Intersect(Target, Cells(i, 5)) Is Nothing Then Target.Value = Time ' heure de retour
If Not Intersect(Target, Cells(i, 8)) Is Nothing Then 'vérification des éléments pour la balise :
'balise 1
If Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value = "00:02:00" Then
UserForm3c.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value < "00:01:59" Then
UserForm3.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value > "00:02:00" Then
UserForm3b.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value = "" Then
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value <> "IVAF" Then
UserForm4.Show
End If
Next
End Sub
Bonjour,
teste en plaçant le end if avant le next à la fin
Bonjour à tous ,
Une version qui passe le test de la compilation ...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
For i = 2 To 32
If Not Intersect(Target, Cells(i, 2)) Is Nothing Then UserForm1.Show 'nom de l'élève
If Not Intersect(Target, Cells(i, 3)) Is Nothing Then UserForm2.Show 'n° de balise recherchée
If Not Intersect(Target, Cells(i, 4)) Is Nothing Then Target.Value = Time ' heure de depart
If Not Intersect(Target, Cells(i, 5)) Is Nothing Then Target.Value = Time ' heure de retour
If Not Intersect(Target, Cells(i, 8)) Is Nothing Then 'vérification des éléments pour la balise :
'balise 1
If Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value = "00:02:00" Then
UserForm3C.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value < "00:01:59" Then
UserForm3.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 7).Value = "IVAF" And Worksheets("Feuil3").Cells(i, 6).Value > "00:02:00" Then
UserForm3B.Show
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value = "" Then
ElseIf Worksheets("Feuil3").Cells(i, 3).Value = 1 And Worksheets("Feuil3").Cells(i, 4).Value <> "IVAF" Then
UserForm4.Show
End If
End If
Next i
End sub
ric
Hello !
Tout d'abord merci à tous pour votre réactivité !
Rag02700 et M12 vos solutions renvoient "next sans for" sur mon PC.
Ric ça marche nickel ! Merci.
Avant que je marque en résolu pourrais tu m'expliquer ce qui fait que ta version du code passe ?
Je suppose que ça tourne autour de la variable i...
Encore merci quoi qu'il en soit !
Bonjour,
Le next n'était pas au bon endroit et il manquait 1 End IF
Dans la fenêtre VBE, menu Débogage > Compiler VBAProject.
ric
Merci,
Je m'en servirai mieux à l'avenir.
Je passe en résolu.