Probleme avec une boucle SI

J'ai un probleme avec une boucle SI en fait je dois faire une configuration d'un bouton qui permet d'envoyer des emails selon des conditions : dans mon cas il prends toujours le premier cas vrai meme si j'essaie avec deux vrais il prend le premiere voici le code :

      
               If LCase(Cells(cell.Row, "E").Value) = "dnm" Then

               bodymessage = Sheets("lien").Range("B9").Value

           ElseIf LCase(Cells(cell.Row, "F").Value) = "dnm" Then

                bodymessage = Sheets("lien").Range("B10").Value

             ElseIf LCase(Cells(cell.Row, "G").Value) = "dnm" Then

                bodymessage = vbNewLine & Sheets("lien").Range("B11").Value

               ElseIf LCase(Cells(cell.Row, "H").Value) = "dnm" Then

                bodymessage = Sheets("lien").Range("B12").Value

              End If
              .Body = bodymessage

Bonjour,

Avec la structure :

Si <Condition1> alors 
    <Instruction1>
Sinon, si <Condition2> alors 
    <Instruction2>
Sinon, si <Condition3> alors 
    <Instruction3>
Fin SI.

Si la première condition est vérifiée, il est logique que ce soit l'instruction qui correspond à cette condition, et seulement elle, qui soit prise en compte.

Si tu souhaites que chacune des conditions soit examinée, il faut opter pour une structure du type :

Si <Condition1> alors 
    <Instruction1>
Fin SI.
Si <Condition2> alors
    <Instruction2>
Fin SI.
Si <Condition3> alors 
    <Instruction3>
Fin SI.

A+

Bonjour,

La syntaxe

Cells(cellule.Row, "E")

m'interroge. Pour moi Cells doit contenir deux arguments numériques Cells(numero_de_ligne;numéro_de_colonne). je ne connais pas la valeur de ton premier argument (cellule) mais le second "E" devrait plutôt être 5) et pour "F" -> 6, Pour "G" -> 7, ... etc

Pour vérifier tu peux tester la ligne :

Msgbox LCase(Cells(cellule.Row, "E").Value

Si elle donne le bon résultat l'erreur ne vient pas de là, sinon corrige.

je dois vous remercier tout dàbord pour votre aide sinon j`ai essayee ce que vous m`avez propose mais ca marche bien seulemet avec les deux premieres cas apres il prend tous les conditions :/

voici le code

            
               If LCase(Cells(cell.Row, "E").Value) = "dnm" Then

               bodymessage = vbNewLine & Sheets("lien").Range("B9").Value

          End If

         If LCase(Cells(cell.Row, "F").Value) = "dnm" Then

                bodymessage1 = vbNewLine & Sheets("lien").Range("B10").Value

             End If

            If LCase(Cells(cell.Row, "G").Value) = "dnm" Then

                bodymessage2 = vbNewLine & vbNewLine & Sheets("lien").Range("B11").Value

             End If

            If LCase(Cells(cell.Row, "H").Value) = "dnm" Then

                bodymessage3 = vbNewLine & Sheets("lien").Range("B12").Value

              End If
              .Body = bodymessage & bodymessage1 & bodymessage2 & bodymessage3
              

Bonjour,

Désolé, je ne comprends pas ce qui ne te convient pas (ni ce que tu cherches à faire en réalité).

Ton code fonctionne correctement :

Si la cellule E contient "dnm", le texte de lien!B9 est pris en compte,

Si la cellule F contient "dnm", le texte de lien!B10 est pris en compte,

Si la cellule G contient "dnm", le texte de lien!B11 est pris en compte,

Si la cellule H contient "dnm", le texte de lien!B12 est pris en compte,

Au final, ton message est bien composé des textes retenus.

A+

Rechercher des sujets similaires à "probleme boucle"