XL 2016 Excel avec envoi par mail en cliquant sur le nom d'un client selon une sélcetion

ellea02

XLDnaute Junior
Bonjour à tous,

Je cherche à envoyer par mail une sélection Excel qui selon le nom du client l'envoie à son adresse mail.

Un client peut se nommer Client X N°1, Client X n°2..... Client Y N°....

Lorsque je souhaite envoyer au client X la sélection devra me prendre le N° 1 et le N°2.

Chaque onglet correspond à un jour de travail et nous envoyons la sélection aux clients tous les jours.

Pouvez vous m'aider?

Nous envoyons 50 mails par jour à nos clients et cela devient compliquer de tout faire en manuel
 

Pièces jointes

  • Envoie fichier client.xlsx
    10.6 KB · Affichages: 7

Calvus

XLDnaute Barbatruc
Bonjour Ellea02, le forum,

Voici un exemple si j'ai bien compris la demande.

Le choix du client se fait en cliquant sur le bouton Client créé sur la 1ère feuille.

Ensuite une macro est appelée pour l'envoi du mail.
VB:
Option Explicit
Public client As Range, List, clientAdresse As String, jour
Sub Choix_Client()
Dim clientcherche As String
Dim i As Single, r As String, r2 As String

jour = ""
clientcherche = InputBox("Client")
    Set client = Feuil4.Columns(1).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Find(clientcherche)
clientAdresse = client.Offset(, 1)

For i = 2 To 5
If Cells(i, 1) Like "Client " & clientcherche & "*" Then
    r = Cells(i, 1) & ";"
    r2 = Cells(i, 2) & ";"
    List = List & r
    jour = jour & Chr(10) & r2
End If
Next i
Call mail
End Sub
Sub mail()
Dim Myoutlook As Object
Dim MyItem As Object
Dim List As String, Attache As String, Attache2 As String, Sujet As String
Dim f As Worksheet, f1 As Worksheet, Body As String

Set Myoutlook = CreateObject("Outlook.Application")
Set MyItem = Myoutlook.CreateItem(0)

Sujet = "Bla bla bla" ' & Feuil1.Range("A1")
Body = "Vos jours de réservation sont :" & Chr(10) & jour
With MyItem
    .To = clientAdresse
    .Subject = Sujet
    .Body = Body
suite:
    .Display
'    '.Send
End With


End Sub

Pour que cela fonctionne, il a fallu cocher "Microsoft Outlook 12.0 Object Library" dans les références VBA. Sinon cela ne peut pas fonctionner.

Voilà qui devrait être un bon début.

Bonne journée.
A+
 

Pièces jointes

  • Envoie fichier client.xlsm
    20.1 KB · Affichages: 5

Calvus

XLDnaute Barbatruc
Bon,

Dans ma grande bonté, j'ai un peu modifié le fichier afin que toutes les données soient saisies directement à partir de la feuille "Données".
On peut ainsi adapter le contenu de ses mails.

Bon, je retourne bosser maintenant.

A+
 

Pièces jointes

  • Envoie fichier client.xlsm
    23.5 KB · Affichages: 8

ellea02

XLDnaute Junior
Calvus,

Est ce normal que dans le mail, la sélection des jours de réservation ne s'affichent pas? Nous cherchons à faire un copier/coller de ce type dans le mail:

Merci
Nom Client​
jour de réservation​
motif​
Client X n°1​
01-juin​
gfgfgf​
Client X n°2​
02-juin​
fgggd​
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Bonjour,

Je t'avoue que j'ai galéré pas mal !
J'aurais mieux fait de partir à la montagne, mais bon... la météo n'est pas de mon coté ! ;)

Voici ce que tu souhaites, enfin j'espère.
Pas mal cherché sur le net pour trouver un code fonctionnel.
VB:
Option Explicit
Public client As Range, clientAdresse As String
Sub Choix_Client()
Dim clientcherche As String
Dim i As Single, j As String, r As String, r2 As String

clientcherche = InputBox("Choix du client")
Set client = Feuil4.Columns(1).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Find(clientcherche)
If client Is Nothing Then Exit Sub
clientAdresse = client.Offset(, 1)

j = 2
For i = 2 To 5
If Cells(i, 1) Like "Client " & clientcherche & "*" Then
        Cells(j, 10) = Cells(i, 1)
        Cells(j, 11) = Cells(i, 2)
        j = j + 1
End If
Next i
 
Call mail
End Sub
Sub mail()
Dim Myoutlook As Object
Dim MyItem As Object

Dim strHTML As String
Dim i As Byte, j As Byte, Sujet As String
 
Set Myoutlook = CreateObject("Outlook.Application")
Set MyItem = Myoutlook.CreateItem(0)
 
Sujet = Feuil5.Range("C2")
 
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & Feuil5.Range("C3") & "<BR><BR><BR>" & Feuil5.Range("C4") & "<BR><BR>" & Feuil5.Range("C5") & "<BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"
 
For i = 1 To 3 'nombre de lignes (exemple plage A1:B5)
    strHTML = strHTML & "<TR halign='middle'nowrap>"
    For j = 10 To 12 'nombre de colonnes
        strHTML = strHTML & "<TD bgcolor='#F0FFFF'align='center'><FONT COLOR='blue'SIZE=3>" _
        & Cells(i, j) & "</FONT></TD>"
    Next j
    strHTML = strHTML & "</TR>"
Next i
 
 
strHTML = strHTML & "</TABLE>"
 
strHTML = strHTML & "<BR><BR>" & Feuil5.Range("C6") & "<BR>" & Feuil5.Range("C7") & "<BR><BR>" & Feuil5.Range("C8") _
& "<BR>" & Feuil5.Range("C9") & "<BR>" & Feuil5.Range("C10") & "<BR>" & Feuil5.Range("C12") & "<BR>" & Feuil5.Range("C13")
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
 
With MyItem
    .To = clientAdresse
    '.From = "youralias@yourdomain.com"
    .Subject = Sujet
    .HTMLBody = strHTML
    .Display
End With

End Sub

A+
 

Pièces jointes

  • Envoie fichier client3.xlsm
    26.6 KB · Affichages: 10

Discussions similaires

Statistiques des forums

Discussions
311 722
Messages
2 081 930
Membres
101 843
dernier inscrit
Thaly