Forum Clubic

Envoie de mail par excel

Bonjour tout le monde.

J’aimerais qu’en ce jour pluvieux d’avril une âme charitable me rende service.
Je souhaiterais envoyer par mail un classeur ou une feuille excel à plusieurs destinataires en même temps.
Ces destinataires seraient stockés dans la feuille où se situe la macro, contrairement au document que je souhaite envoyer.De plus dans la macro il ne devrait pas y avoir les noms des destinataires mais seulement la plage des données.

NB : si en plus vous avez quelque chose pour convertir le classeur ou la feuille envoyé en pdf cela serait magique.

D’avance merci et bonne journée
Edité le 11/04/2008 à 15:52

Non pas trop.

J’ai déjà regarder ces trois pages avant de poster ici.

En fait imaginons que j’ai un fichier excel repertoire.xls et un fichier Données.xls

Je voudrait dans le module de repertoire.xls où se trouve dans la colonne A les adresses mail une macro qui me prend le fichier données et l’envoie directement au mail de la colonne A

Envoie le classeur actif à plusieurs destinataires. Plage A1:A10

Vous pouvez ajouter des adresses, il suffit de modifier:
la référence de la plage A1:A11
la boucle 1 To 11
et le tableau Array(myadress(11) etc…
Sub EnvoiClasseurAd()
Dim myadress(1 To 10)

Set mylst = ActiveSheet.Range(“a1:a10”)
Count = 1

For Each Envoi In mylst
If Len(Envoi) Then myadress(Count) = Envoi: Count = Count + 1
Next

ActiveWorkbook.SendMail Recipients:=Array(myadress(1), myadress(2), _
myadress(3), myadress(4), myadress(5), myadress(6), myadress(7), _
myadress(8), myadress(9), myadress(10)), Subject:=" Voilà le classeur demandé"
End Sub


tiens regarde la : [dj.joss.free.fr...](http://dj.joss.free.fr/web.htm#mail2)

en mixant tu devrait pouvoir le faire


[dj.joss.free.fr...](http://dj.joss.free.fr/sommaire.htm)

Ca aussi je l’ai imprimé le problème c’est que la il s’agit du classeur actif. Or le classeur actif sera ici le fichier repertoire et non pas les fichier données.

Sub EnvoiClasseurAd()
Dim myadress(1 To 10)

Set mylst = ActiveSheet.Range(“a1:a10”) -> le problème est ici en fait. Set mylist = “C:…” ca marcherait ?
Count = 1

EDIT : j’ai essayé de mettre le chenmin pour me rendre à mon fichier et cela ne fonctionne pas
Edité le 11/04/2008 à 11:59

Sub Le_mail()
La_date = Format(Now, “dd-mmm-yy”)
Nomfeuil2 = " Flash business du " & La_date

'Transfert
ThisWorkbook.Sheets(“Feuil1”).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Nomfeuil2
Application.Dialogs(xlDialogSendMail).Show “”, Nomfeuil2
ActiveWorkbook.Close SaveChanges:=False
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

J’ai aussi trouver cela mais comme d’hab seul le classeur ouvert peut etre importer et de plus on ne peut saisir les adresse du classeur.
Faut que j’eesaye un mix entre celle-ci et celle plus haut.

oui
sinon il faut une base accees

Sub Le_mail()
La_date = Format(Now, “dd-mmm-yy”)

Dim myadress(1 To 1)
'1 to n adresse mail

Set mylst = Sheets(“Feuil2”).Range(“a1:a1”)
'plage correspondant au nombre d’adresse mail de la colonne A
'Adresse présente sur la feuille 2
Count = 1

For Each Envoi In mylst
If Len(Envoi) Then myadress(Count) = Envoi: Count = Count + 1
Next

'Transfert des données de la Feuille 1
ThisWorkbook.Sheets(“Feuil1”).Copy
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.CutCopyMode = False
Application.ScreenUpdating = True
'Penser à rajouter le bon nombre de myadress(n) pour le compteur
ActiveWorkbook.SendMail Recipients:=Array(myadress(1)), Subject:=" Flash business du " & La_date

End Sub

J’ai fait cela et ça fonctionne

un petit mix

bien tu as resolue toi meme ton probleme

En fait pas completement.

Sub Le_mail()
La_date = Format(Now, “dd-mmm-yy”)

Dim myadress(1 To 1)
'1 to n adresse mail

Set mylst = Sheets(“Feuil2”).Range(“a1:a1”)
'plage correspondant au nombre d’adresse mail de la colonne A
'Adresse présente sur la feuille 2
Count = 1

For Each Envoi In mylst
If Len(Envoi) Then myadress(Count) = Envoi: Count = Count + 1
Next

'Transfert des données de la Feuille 1
ThisWorkbook.Sheets(“Feuil1”).Copy
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.CutCopyMode = False
Application.ScreenUpdating = True
'Penser à rajouter le bon nombre de myadress(n) pour le compteur
ActiveWorkbook.SendMail Recipients:=Array(myadress(1)), Subject:=" Flash business du " & La_date

End Sub


Voici ce que ca donne, cependant mon chef aimerait ne pas voir besoin de rajouter à la main le nombre d’adress mail a entrer à la fois dans la declaration de myadress ou de la plage.
Il m’a donc dit de passer (“a1:a1”) en parmaetre pour le faire descendre d’un ligne tant que c’est different de 0
or je vois pas du tout comment faire

Edité le 11/04/2008 à 15:55

change de chef trop exigeant celui la

tu l’as dit en plus en tant que stagiaire je dois faire mes preuves…

Voici ce que ca donne, cependant mon chef aimerait ne pas voir besoin de rajouter à la main le nombre d’adress mail a entrer à la fois dans la declaration de myadress ou de la plage.
Il m’a donc dit de passer (“a1:a1”) en parmaetre pour le faire descendre d’un ligne tant que c’est different de 0
or je vois pas du tout comment faire

j’ai pas tout compris a ce q’il voulait