Erreur programme VBA

Fermé
nadnad13 Messages postés 22 Date d'inscription mardi 5 août 2014 Statut Membre Dernière intervention 7 août 2014 - Modifié par nadnad13 le 6/08/2014 à 18:00
nadnad13 Messages postés 22 Date d'inscription mardi 5 août 2014 Statut Membre Dernière intervention 7 août 2014 - 6 août 2014 à 19:11
Bonjour,

J'ai un problème, Lorsque j'exécute le programme suivant :



For compteur = 1 To n
If Sheets(Feuil1).Cells(i, 4).Value = "Ecl" Then
Nb_depart_Ecl = Nb_depart_Ecl + 1
If Sheets(Feuil1).Cells(i, 4).Value = "PC" Then
Nb_depart_PC = Nb_depart_PC + 1
If Sheets(Feuil1).Cells(i, 4).Value = "Att Clim" Then
Nb_depart_CLIM = Nb_depart_CLIM + 1
If Sheets(Feuil1).Cells(i, 4).Value = "Att Plomb" Or Sheets(Feuil1).Cells(i, 4).Value = "Att secur" Or Sheets(Feuil1).Cells(i, 4).Value = "Att Div" Then
Nb_depart_ATT = Nb_depart_ATT + 1
i = i + 3
Next compteur

J'obtient un message d'erreur disant :

Erreur de compilation :
Next sans For


Alors que l'instruction For figure bel et bien dans le programme..

Merci d'avance.
A voir également:

1 réponse

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 6/08/2014 à 18:47
Bonjour

en fait il te manque les end if
tu as plusieurs solutions dont

For compteur = 1 To n
  If Sheets(Feuil1).Cells(i, 4).Value = "Ecl" Then
    Nb_depart_Ecl = Nb_depart_Ecl + 1
  end if
  If Sheets(Feuil1).Cells(i, 4).Value = "PC" Then
    Nb_depart_PC = Nb_depart_PC + 1
  end if
  If Sheets(Feuil1).Cells(i, 4).Value = "Att Clim" Then
    Nb_depart_CLIM = Nb_depart_CLIM + 1  
  end if
  If Sheets(Feuil1).Cells(i, 4).Value = "Att Plomb" Or Sheets(Feuil1).Cells(i, 4).Value = "Att secur" Or Sheets(Feuil1).Cells(i, 4).Value = "Att Div" Then
    Nb_depart_ATT = Nb_depart_ATT + 1
  end if
  i = i + 3
Next compteur

For compteur = 1 To n
  If Sheets(Feuil1).Cells(i, 4).Value = "Ecl" Then
    Nb_depart_Ecl = Nb_depart_Ecl + 1
  elseIf Sheets(Feuil1).Cells(i, 4).Value = "PC" Then
    Nb_depart_PC = Nb_depart_PC + 1
  elseIf Sheets(Feuil1).Cells(i, 4).Value = "Att Clim" Then
    Nb_depart_CLIM = Nb_depart_CLIM + 1
  elseIf Sheets(Feuil1).Cells(i, 4).Value = "Att Plomb" Or Sheets(Feuil1).Cells(i, 4).Value = "Att secur" Or Sheets(Feuil1).Cells(i, 4).Value = "Att Div" Then
    Nb_depart_ATT = Nb_depart_ATT + 1
  end if
  i = i + 3
Next compteur

For compteur = 1 To n
  If Sheets(Feuil1).Cells(i, 4).Value = "Ecl" Then Nb_depart_Ecl = Nb_depart_Ecl + 1
  If Sheets(Feuil1).Cells(i, 4).Value = "PC" Then Nb_depart_PC = Nb_depart_PC + 1
  If Sheets(Feuil1).Cells(i, 4).Value = "Att Clim" Then Nb_depart_CLIM = Nb_depart_CLIM + 1
  If Sheets(Feuil1).Cells(i, 4).Value = "Att Plomb" Or Sheets(Feuil1).Cells(i, 4).Value = "Att secur" Or Sheets(Feuil1).Cells(i, 4).Value = "Att Div" Then Nb_depart_ATT = Nb_depart_ATT + 1
  i = i + 3
Next compteur

For compteur = 1 To n
  select case Sheets(Feuil1).Cells(i, 4).Value 
    case  "Ecl": Nb_depart_Ecl = Nb_depart_Ecl + 1
    case  "PC" : Nb_depart_PC = Nb_depart_PC + 1
    case  "Att Clim" : Nb_depart_CLIM = Nb_depart_CLIM + 1
    case  "Att Plomb" ,"Att secur" , "Att Div" : Nb_depart_ATT = Nb_depart_ATT + 1
  end select
  i = i + 3
next compteur


Cdlmnt
0
nadnad13 Messages postés 22 Date d'inscription mardi 5 août 2014 Statut Membre Dernière intervention 7 août 2014
Modifié par nadnad13 le 6/08/2014 à 18:56
Merci beaucoup pour votre réponse.

J'ai une autre question svp:

Supposons que j'aie déclaré une variable i que j'ai initialisé à 4 en dehors de la boucle for, et qu'en dedans de cette boucle figure l'instruction i = i + 3 par exemple; en sortant de cette boucle, est ce que i reprend sa valeur initiale ( = 4 ) où est ce qu'elle reçoit une nouvelle valeur dépendamment des modification que celle ci a subit dans la boucle ?

J'étais sure qu'elle changeait de valeur jusqu'à ce que j'obtienne des résultats erronés.. :/

Merci d'avance
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 6/08/2014 à 19:18
A un moment donné de l'exécution, une variable contient toujours la dernière valeur qui lui a été attribuée

Cdlmnt
0
nadnad13 Messages postés 22 Date d'inscription mardi 5 août 2014 Statut Membre Dernière intervention 7 août 2014
6 août 2014 à 19:11
Merci :)
0