Erreur programme VBA

nadnad13 Messages postés 25 Statut Membre -  
nadnad13 Messages postés 25 Statut Membre -
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.

1 réponse

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. nadnad13 Messages postés 25 Statut Membre
       
      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
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      A un moment donné de l'exécution, une variable contient toujours la dernière valeur qui lui a été attribuée

      Cdlmnt
      0
    3. nadnad13 Messages postés 25 Statut Membre
       
      Merci :)
      0