Probleme code if-then-else

Bonjour,

J'essaye de coder une fonction if-then-else et j'ai quelque soucis avec mon code, en effet la fonction if-then fonctionne si elle est toute seul en revanche, si j'essaye de code la fonction else, la première ligne ne fonction plus et je passe directement à la fonction else.

voila mon code:

Dim a()
Private Sub CommandButton3_Click()
      With BDD
          For i = 7 To .Range("B" & Rows.Count).End(xlUp).Row
              If .Cells(i, 2) = Usf.ComboBox1.Value Then
                  Cells(i, 2).Select
                  Else
                  Call affcreer
                  Exit For
                End If
          Next i
      End With
End Sub

Je veux coder:

si la valeur dans la cellule (i,2)=combobox1 alors sectionner la cellule sinon lancer le module affcreer

Je n'arrive pas à trouver de solution, pouvez vous-m 'aidez?

Cordialement

MAX

Bonjour maxgib,

maxgib a écrit :

en revanche, si j'essaye de code la fonction else, la première ligne ne fonction plus et je passe directement à la fonction else.

De quelle ligne fais-tu référence?

Si ta condition est remplie, le code équivalent sera à ton test if then else sera

Cells(i, 2).Select

Si ta condition n'est pas remplie, le code équivalent sera

Call affcreer
Exit For

Es-ce que tu veux que dans les 2 cas, ta cellule soit sélectionnée?

PS: Attention, tu as oublié un "."

Cells(i, 2).Select
'devrait être
.Cells(i, 2).Select

Bonjour, merci de ta réponse, je fais référence à la ligne:

Cells(i, 2).Select

et donc en l'occurrence, que la condition soit remplie ou pas, la fonction lance le code:

call affcreer

J'ai essayé de sortir l' Exit for mais cela ne fonctionne pas non plus

Bonjour, Salut d3d9x,

Je ne pense pas que tu as besoin de tester les valeurs équivalentes qui sélectionnent les cellules une par une. Tu as une action à faire si la valeur n'est pas égale. Fais plutôt comme ça :

Private Sub CommandButton3_Click()
      With BDD
          For i = 7 To .Range("B" & Rows.Count).End(xlUp).Row
                If .Cells(i, 2) <> Usf.ComboBox1.Value Then
                    Call affcreer
                    Exit For
                End If
          Next i
      End With
End Sub

Ceci étant dit, sans voir ton fichier, je ne suis pas sur de la véracité du test effectué. C'est à toi d'assurer les bonnes valeurs comparées.

re,

j'ai essayé de rajouter un if-then, comme tu as dit raja, mais cela ne fonctionne pas non plus....

je vous envoi un fichier test avec seulement le code que j'essaye de faire fonctionner, le bouton se trouve sur la feuille deux et ce que je veux c'est qu'il fasse apparaitre soit la designation dans la feuille 1, soit un user form dans la feuil 3

merci pour vos reponse

MAX

Re,

Il est où la feuille "BDD" que tu fais mention dans ton code ?

Excusez moi, j'ai fais ca trop vite, voila le bon fichier

Re,

Essaye le code suivant :

Private Sub CommandButton3_Click()
    ' Valider la saisie
    bdd.Select
      If Usf.ComboBox1 = "" Then
          MsgBox "Vous devez sélectionner un équipement."
          Usf.ComboBox1.SetFocus
          Exit Sub
      End If
      With Sheets("bdd")
            derLig = .Range("B" & Rows.Count).End(xlUp).Row
            On Error Resume Next
            i = WorksheetFunction.Match(Usf.ComboBox1.Value, .Range(Cells(1, 2), Cells(derLig, 2)), 0)
                If i > 0 Then
                    Cells(i, 2).Select
                Else
                    Call affcreer
                End If
      End With
      Unload Usf
End Sub

Re,

nickel c'est exactement ça merci!

bonne journée!

Rechercher des sujets similaires à "probleme code then else"