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+