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 Sub

Merci beaucoup pour ton message! Je vais tester demain au travail et voir si ca fonctionne!

Rechercher des sujets similaires à "vba"