Programmer en vba

Bonjour,
depuis hier suis bloqué sur un boulot, en fait je dois écrire un programme qui me permettra de classer des pays selon les points qu'ils ont accumulé. Et je le fais sur exel en particulier j'utilise les macros exel. g écris mon algorithme en VBA mais quand j'excute ca me dit "else sans if" alors que je vois l'erreur.
voici mon algorithme:

Sub cahieruemoa()
Dim Ci As Single
Dim classe As String
Range(c65) = Ci
Range(d65) = classe
If 1 <= Ci < 5 Then classe = "C"
ElseIf 5 <= Ci < 10 Then classe = "C+"
ElseIf 10 <= Ci < 15 Then classe = "C++"
ElseIf 15 <= Ci < 20 Then classe = "B"
ElseIf 20 <= Ci < 25 Then classe = "B+"
ElseIf 25 <= Ci < 30 Then classe = "B++"
ElseIf 30 <= Ci < 35 Then classe = "A"
ElseIf 35 <= Ci < 40 Then classe = "A+"
Else: classe = "A++"
End If
End Sub

aider moi svp.
Configuration: Windows Vista
Firefox 3.0.13

6 réponses

  1. Contributeur
    bonjour,

    essaies plutôt une autre structuration de tes conditions
    par exemple

    CI = Range("C65")
    Select Case CI
        Case Is < 1
            classe = ""
        Case Is < 10
            classe = "C"
        '.....etc
        
        Case Is < 40
            classe = "A+"
        Case Else
            classe = "A++"
    End Select
    
    Range("D65") = classe
    End Sub


    nota dans ton "algo" si CI est ibnférieur à 1 tu as classe=A++... donc j'ai opté pour "rien" ("")
    0
    1. excuse moi de te deranger mais aprés le case je met ci ou pas?
      0
      1. Contributeur
        ben non sinon je l'aurais écrit !!!
        0
    2. Contributeur
      Bonjour, ce serait effectivement mieux avec le select, mais pour répondre à ta question...
      If 1 <= Ci < 5 Then 
          classe = "C" 
      ElseIf 5 <= Ci < 10 Then  classe = "C+" 
      ElseIf 10 <= Ci < 15 Then classe = "C++" 
      ElseIf 15 <= Ci < 20 Then classe = "B" 
      ElseIf 20 <= Ci < 25 Then classe = "B+" 
      ElseIf 25 <= Ci < 30 Then classe = "B++" 
      ElseIf 30 <= Ci < 35 Then classe = "A" 
      ElseIf 35 <= Ci < 40 Then classe = "A+" 
      Else: classe = "A++" 
      End If 

      Tu ferme directement ton 1er If
      A+
      0
      1. excuse moi michel ,g fais ce que tu ma dit mais quand j'exécute le programme ca marche mais sur ma feuille d'exel je vois rien qui s'affiche.
        0
        1. Contributeur
          Bonsoir,

          et pour ton code original je pense que c'est là que ça coince :
          If 1 <= Ci < 5 Then
          au lieu de :
          If 1 <= Ci and Ci < 5 Then

          eric
          0