Envoi de mail depuis liste excel

VinceJD

XLDnaute Nouveau
Bonjour à tous,

J’aurais besoin de votre aide. J’ai besoin de générer un mail a partir d’un fichier de Excel dans lequel nous assurons un suivi de différents problèmes. Chaque problème est décrit sur une ligne et à un pilote pour le résoudre. Je voudrais à partir de ce tableau envoyer un mail en automatique tous les jours aux pilotes des points qui ne sont pas soldés (pas de date dans la colonne SOLDE). Pouvez vous m’aider svp. Je mets en PJ un exemple du fichier : dans le premier onglet le tableau reprenant tous les points ouverts et dans le deuxième onglet les listes de destinataires. Ce mail doit être adressé en copie systématiquement aux personnes listées dans la colonne « POUR INFO ».
A votre disposition si vous avez besoin de plus d’infos et encore merci de votre aide car ceci dépasse mes compétences…

Vincent
 

Pièces jointes

  • DQM.xlsx
    24.3 KB · Affichages: 54

Yaloo

XLDnaute Barbatruc
Re : Envoi de mail depuis liste excel

Bonjour VinceJD, Carnage,


Il est possible d'envoyer les lignes souhaitées dans le corps du mail.

Par contre, il faut bien définir ce que tu veux. Merci de valider les points suivants :

- Il faut envoyer un mail à chaque Pilote de la feuille DQM dont la ligne n'est pas soldé ?
- Ce mail doit regrouper toutes les lignes non soldées du Pilote ?
- Ce mail est envoyé au Pilote (en mail principal) et en copie à toute la liste des Pilotes en feuille Liste ?

Est-ce bien cela ?

A te relire

Martial
 

Carnage029

XLDnaute Occasionnel
Re : Envoi de mail depuis liste excel

Bonjour Martial, je met le code que j'ai fait pour t'aider (je passe la main pour ce que je ne sais pas faire)

De ce que j'ai compris, il faut envoyer un mail a chaque pilot qui a au moins une ligne non soldée. Si un même pilote à plusieurs lignes non soldées, lui envoyer un seul mail contenant toutes les infos.

Le mail est envoyé au pilote concerné et en plus prend (quelque soit le pilote) toute la liste des CCI,


Pour l'instant ce que j'ai fait envoi un mail pour chaque ligne non soldée au bonnes personnes (mais le corps du message ainsi que le mail unique si plusieurs lignes ne fonctionne pas).


Dis moi si tu prend la suite :)




Code:
Sub envoyermail()

zzz = MsgBox("Confirmer l'envoi des mails", vbOKCancel)

If zzz = vbOK Then
ActiveWorkbook.Sheets("DQM").Select
Dim my_pilote As String
Dim i As Integer


For i = 1 To 200
    
    If Range("K" & i + 1).Value = "" And Range("I" & i + 1).Value <> "" Then
    my_pilote = Range("I" & i + 1).Value
    dd = i + 1
    envoyermailparticulier my_pilote, dd
    End If

Next i
End If
End Sub


Private Sub envoyermailparticulier(pilote As String, dd)

Dim pilote_mail, info_mail As String

pilote_mail = WorksheetFunction.VLookup(pilote, Sheets("LISTE").Range("A3:B100"), 2, False)
info_mail = ""

For i = 1 To 100

    info_mail = info_mail & ";" & Sheets("LISTE").Range("D" & i + 2)
    
Next i


ActiveSheet.Range("A1:N1,A" & dd & ":N" & dd).Copy ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True
 
With ActiveSheet.MailEnvelope
    .Introduction = "bonjour , ci joint les données ..."
    .Item.To = pilote_mail
    .Item.Subject = "Mettre ton objet de mail ici"
    .Item.cc = info_mail
    .Item.Paste
    '.Item.Send

End With

End Sub


J'ai juste mis le send en commentaire pour faire des tests.

J'essayait de faire un mail unique par pilote, mais j'ai pas trop réussi (matrice... d'ou la variable dd, mais ne pas en tenir compte)
 

Yaloo

XLDnaute Barbatruc
Re : Envoi de mail depuis liste excel

Re,

Tu confirmes bien ce que j'avais compris dans vos différents échanges.

Je vois ça ce soir. J'y ai jeté un œil entre midi et deux, il me reste juste quelques lignes à mettre au point.

A+

Martial
 

Carnage029

XLDnaute Occasionnel
Re : Envoi de mail depuis liste excel

Je t'avoue que je suis intéressé par l'envoie de ligne spécifiques ainsi que la méthode pour envoyer un seul e-mail, (je pense que tu va devoir faire uen boucle a partir de la liste des pilotes, mais si il y'en a beaucoup le temps de calcul n'est pas très optimum... le mieux serait de parcourir une seule fois le tableau)...
 

Yaloo

XLDnaute Barbatruc
Re : Envoi de mail depuis liste excel

Re à tous les 2,

Vois le fichier ci-joint, cela devrait correspondre à ta demande.

J'ai utilisé une fonction de Ron de Bruin permettant de copier une plage de cellule dans le corps du texte de chaque mail.

A te relire

Martial

PS : surtout ne pas supprimer la Feuil3 et ne pas supprimer le module FunctionModule
PS2 : Enlever le ' devant Send pour envoyer réellement les mails, et en mettre un devant Display
 

Pièces jointes

  • DQM.xlsm
    47.8 KB · Affichages: 45
  • DQM.xlsm
    47.8 KB · Affichages: 44
  • DQM.xlsm
    47.8 KB · Affichages: 38

Carnage029

XLDnaute Occasionnel
Re : Envoi de mail depuis liste excel

J'ai regardé, bon il faut que je comprenne une partie du code, mais pour moi (a confirmer) ta liste des destinataires n'est pas bonnes.

Tu dois envoyer au "maréchal" concerné uniquement (To) et à tout les "Toto" pour chaque mal fait, sinon si on est sur 64 bits ça passe pas (j'ai testé sur les 2)
 

Yaloo

XLDnaute Barbatruc
Re : Envoi de mail depuis liste excel

Bonjour Carnage,

Après tests, la macro fonctionne correctement d'après ce que j'ai compris. A la maison (W7 64 bits Excel 32bits) et au boulot (Vista 32 bits et Excel 32 bits) même chose ça fonctionne bien.

Dans le fichier ci-joint, j'ai juste modifié les adresses mail de façon à voir le mail destinataire et les mails des copies.

A+

Martial
 

Pièces jointes

  • DQM.xlsm
    48.3 KB · Affichages: 38
  • DQM.xlsm
    48.3 KB · Affichages: 34
  • DQM.xlsm
    48.3 KB · Affichages: 36

Carnage029

XLDnaute Occasionnel
Re : Envoi de mail depuis liste excel

Désolé mais moi quand je lance la macro, j'ai en cc la liste de tout les maréchaux et non des "toto"... Sinon je t'avoue que ton niveau en VBA est largement supérieur au mien, j'ai vu que tu utilisait des d(n) et des dictionnaires, si jamais tu avais un lien pour que je me forme sur le sujet :) Je suis preneur.

(chez moi, en fait j'y ai pensé après mais sur mon 64 bits j'ai pas outlook.... cependant le bug était dès le shellexecute (c'est quoi d’ailleurs ?) )

Merci :)
 

Carnage029

XLDnaute Occasionnel
Re : Envoi de mail depuis liste excel

Je pense que c'est ça, a voir si l'auteur confirme, j'avais juste une question (quand tu aura un peu de temps) sur certaines lignes de code

For n = LBound(tblo) To UBound(tblo)

d.keys

peut tu m'expliquer en détail ces deux lignes ?

(bien sur si tu as du temps :) )
 

Yaloo

XLDnaute Barbatruc
Re : Envoi de mail depuis liste excel

Re,

C'est bien compliqué à expliquer par écrit.

tblo est définit comme un Array (tableau en anglais), tblo permet de définir une plage de la Feuil1 de la colonne I de la ligne 2 jusqu'à la dernière ligne non vide de cette colonne.
tblo = Feuil1.Range("I2:I" & Feuil1.Range("I" & Rows.Count).End(xlUp).Row)

VB:
'LBound donne le début du tableau (tblo) et UBound détermine la fin du tableau (tblo)
'Dans notre cas, de 1 à 7 *
For n = LBound(tblo) To UBound(tblo)
  'x prend la valeur n du tblo
  x = tblo(n, 1)
  'd est définit comme dictionnary, on attribut la valeur au dictionnaire, le dictionnaire ne peut pas accepter de doublons, par contre il peut les compter (dans notre cas, cela ne sert pas), et ajoute, tour à tour, les données du tableau tblo.
  d(x) = d(x) + 1
Next n

* Dans notre cas, de 1 à 7, parcequ'au tout début de la macro, il y a Option Base 1, si l'on ne met rien de ce cas-là les tableaux commencent à 0

Ensuite, pour utiliser les données du dictionnaire d il suffit d'employer d.keys cela premet de récupérer un tableau avec toutes les données de la plage définit plus haut avec tblo mais sans doublon
a = d.keys

Le très bon site de Misange Excelabo t'explique cela mieux que moi les array et le Ce lien n'existe plus, tu trouveras aussi beaucoup d'exemples sur l'excellent site de Jacques BOISGONTIER

A+

Martial
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
177
Compte Supprimé 979
C
Réponses
2
Affichages
358

Statistiques des forums

Discussions
312 793
Messages
2 092 157
Membres
105 241
dernier inscrit
Mixlsm