VB - Excel : recherche des valeurs

Bonjour,

Je suis en train de réaliser un petit projet via Excel 2007 et Vb.

Je souhaite rechercher des valeurs dans Excel en fonction des résultats inscrit dans 2 listes (la premiere est "Niveaux" et la deuxième est "Risque").
Selon le choix, on obtient la selection d'une valeur y qui correspond à la colonne des valeurs.

If Niveaux = "Niveau faible" Then
Y = 4
Else
If Niveaux = "Niveau moyen" Then
Y = 5
Else
Y = 6
End If
End If

Puis je dois déterminer la ligne correspondante puis retirer la valeur dites et l'insérer dans une Textbox (Esp)

For i = 1 To 3
If Risque = "Q" & i Then
Esp = Cells(i + 1, Y)
Else
For u = 1 To 2
If Risque = "A" & u Then
Esp = Cells(u + 4, Y)
Else
For v = 1 To 7
If Risque = "E" & u Then
Esp = Cells(v + 6, Y)
Else
If Risque = "C1" Then
Esp = Cells(14, Y)
Else
Esp = "Erreur"
End If
End If
Next v
End If
Next u
End If
Next i

Je débute en programmation donc c'est surement la méthode dite "bourrin" mais à priori l'erreur vient soit de lde la condition de IF => Risque = "E" & u ou bien de l'envoit des donner dans la TextBox.

En espérant que vous puissiez m'aider.

merci
Configuration: Windows XP
Firefox 3.0.7

5 réponses

  1. Contributeur
    bonjour

    quand tu fais appel à une cellule il faut lui dire.
    2 solutions : Range ou cells
    soit : If Risque = range("Q" & i) Then
    soit : if risque = cells(i,17) then ' 17 correspond à la colonne 17 soit Q
    1. En fait, pour les IF ce que je cherche à comparer c'est un objet text.

      je m'explique je veux verifier je si Risque = Q1 ou Q2 ou Q3 ou A1 ou A2 et je pensais que faire "Q"&i où i varie, serait equivalent à "Qi".

      je pense que c'est la ou ca peche.
      j'ai fais ca pour eviter 15 lignes de IF mais c'est surement une erreur.

      en tt cas merci de ton aide.
      1. Salut
        vous essayez de concatener une expression caractere avec une valeur numérque ??!! mais ça ne marchera jamais dans la quasi totalité des langages de programmation il faut saisir ceci par exemple :
        IF Risque="Q" & STR(TRIM(i)) THEN ....
        TRIM pour effacer les espaces
        Bon courage ; tiens moi au courant
        1. Merci de votre aide.

          j'ai réussi à régler mon probleme avec la solution de Wilfried ==> Range("C"&i)

          Encore merci
          1. Contributeur
            re:

            si tes Q & i sont des contrôles textbox, le système est le même mais avec une syntaxe controlbox
            if risque = me.controls("Q" & i).value then