Probleme end if [Résolu]

Signaler
Messages postés
105
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Bonjour, j'ai un problème j'arrive pa a fermer une boucle if sur ce code,
je ne sais pas ou mettre le end if.

Private Sub OK_Click()
If choix_act = "" Then
    erreur = MsgBox("Veuillez choisir une activité à modifier", vbOKOnly + vbCritical, "OUPS")
End If
Dim i As Integer
' Déclaration de variable
If choix_act.ListIndex = -1 Then
Exit Sub
'Avant de chercher, on vérifie que quelque chose est bien séléctionné dans le Combobox
For i = 2 To Sheets("Abonnements").Range("A65536").End(xlUp).Row
    If Sheets("Abonnements").Cells(i, 1).Value = choix_act.Text Then
        With ADM
            .MODIFICATION = True
            .Act.Text = Sheets("Abonnements").Cells(i, 1).Value
            If Sheets("Abonnements").Cells(i, 2).Value <> vbNullString Then                .case1.Value False: .prix1.Text Sheets("Abonnements").Cells(i, 2).Value
            End If
            If Sheets("Abonnements").Cells(i, 3).Value <> vbNullString Then                .case2.Value False: .prix2.Text Sheets("Abonnements").Cells(i, 3).Value
            End If
            If Sheets("Abonnements").Cells(i, 4).Value <> vbNullString Then                .case3.Value False: .prix3.Text Sheets("Abonnements").Cells(i, 4).Value
            End If
            If Sheets("Abonnements").Cells(i, 5).Value <> vbNullString Then                .case4.Value False: .prix4.Text Sheets("Abonnements").Cells(i, 5).Value
            End If
            If Sheets("Abonnements").Cells(i, 6).Value <> vbNullString Then                .case5.Value False: .prix5.Text Sheets("Abonnements").Cells(i, 6).Value
            End If
            .MODIFICATION = False
            .Show
        End With
        Exit For
    End If
Next i
Unload Me
End Sub

Merci

8 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

C'est là, qu'il te manque un End If (en rouge) : !!!

If choix_act.ListIndex = -1 Then
  Exit Sub
end if
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
tu comptes le if


puis tu comptes les end if


et si il manque un end if
(normalement il en faut le même nombre que pour les if )
tu le rajoutes 
Next i  

Unload Me
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Pourquoi le mettre si loin ?

S'il doit quitter sa sub (il a écrit exit sub), autant le mettre immédiatement ...(voir mon message précédent).
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
faut juste les compter et voir si ils sont bien placés
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
end if
end sub


 
Messages postés
105
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008

Bonjour à vous, jmfmarques a raison moi aussi au début je l'avais mis avant end sub mais ça marché pas.
Merci beaucoup.(en plus j'ai hésité à le mettre là, j'aurai du essayé désolée.)
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Evidemment ...
Car en le mettant à la fin, comme le suggère gillardg, celà terminerait la condition :

If choix_act.ListIndex = -1 Then

Et on ne traiterait alors jamais les cas où une sélection a bien été faite ...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Pour que tu comprennes mieux (et gillardg également )
:

test 1 :

Private Sub Command1_Click()
  toto = "non"
  If toto = "non" Then
    Exit Sub
    If toto = "non" Then
      MsgBox "j'exécute mes instructions"
    End If
  End If
End Sub
la msgbox ne sera jamais affichée, que l'oninitialise toto à "oui ou à "non"

=================

Test 2 :

Private Sub Command1_Click()
  toto = "oui"
  If toto = "oui" Then
    Exit Sub
  End If
  If toto = "non" Then
      MsgBox "j'exécute mes instructions"
   End If
End Sub

tandis que là, msgbox affichée si toto initialisé à "non" et pas affichée si toto initialisé à "oui"