VBA
Bonjour à tous et à toutes !
Je suis débutante sur VBA et en ce moment je travaille dans une entreprise et j'essaie de créer un code sur VBA qui nous permet de remplir un fichier Excel et par la suite, d'envoyer le contenu des lignes remplies par email (via lotus).
Malheureusement, je n'ai pas pu prendre le code de mon travail pour vous le montrer ici pour des raisons de confidentialité.
Jusqu'ici tout fonctionne bien, j'arrive à envoyer mon code directement par email.
J'ai un soucis au niveau de l'envoie de plusieurs lignes de mon tableau Excel.
En claire, pour chaque ligne je veux envoyer le détail des trades (qui sera différent selon la ligne).
Pour le contenu, j'ai créé un code qui ressemble à ca de manière très réduite:
.Body= "Nous avons" & " " & Range(E2).Value
Il affiche donc dans le corps de l'email: Nous avons acheté ou vendu
Le truc c'est que j'aimerais afficher ce même coprs d'email pour toutes les lignes remplies du tableau.
Le truc c'est que lorsque je tape:
.Body= "Nous avons" & " " & Range(E2).Value
"Nous avons" & " " & Range(E3).Value
etc etc ...
alors si les lignes sont vides, ils prennent quand même le "Nous avons" et le reste est vide.
Alors voila mes deux questions:
1) Puis-je réduire mon code pour ne par avoir à taper (E2, E3 etc ....) en créant peut-être une boucle
2) Et il possible dans mon code de détecter si une cellule est vide afin de ne pas mettre le corps de l'email?
Merci d'avance pour votre aide précieuse,
Eli
Bonjour,
Une piste en construisant le message dans une boucle avant de créer le mail :
Sub EnvoiMail()
Dim AppOutlook As Object
Dim OutMail As Object
Dim Lig As Long
Dim I As Long
Dim Message As String
Lig = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row 'sur colonne E
'début du message
Message = "Madame, Monsieur," & vbCrLf & vbCrLf
'construction du message avec récup des valeurs en colonne E à partir de E2 bien sûr, à adapter !
For I = 2 To Lig
If Cells(I, 5).Value <> "" Then
Message = Message & "Nous avons " & Cells(I, 5).Value & vbCrLf
End If
Next I
'formule de politesse et signature
Message = Message & vbCrLf & "Très cordialement" & vbCrLf & vbCrLf & "eli75"
Set AppOutlook = CreateObject("Outlook.Application")
Set OutMail = AppOutlook.CreateItem(0)
With OutMail
.To = "ladresse-du-client@fournisseur.fr"
.Subject = "Sujet du mail !"
.Body = Message
.Display
'.Send
End With
Set OutMail = Nothing
Set AppOutlook = Nothing
End SubMerci beaucoup pour ton message! Je vais tester demain au travail et voir si ca fonctionne!