Envoie de mail avec pièce-jointe selon données dans un tableau

Fermé
anizzz Messages postés 17 Date d'inscription mercredi 17 septembre 2014 Statut Membre Dernière intervention 20 novembre 2014 - 13 nov. 2014 à 12:21
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 20 nov. 2014 à 16:10
Bonjour,


Le principe est le suivant: J'ai une première feuille excel " DMS TS generator " avec un tableau listant des auditeurs et les cartes qu'ils doivent utiliser pour faire des audits. J'ai une première macro qui copie ce tableau et assigne aléatoirement des cartes aux auditeurs. Dans chaque nouvelle feuille créée (ici appelée "semaine1") j'aimerai qu'en cliquant sur le nom de la personne la carte qui lui est assignée par le tableau lui soit envoyée ( les adresses sont dans la colonne AU ) , les cartes à envoyer sont des feuilles de ce document ( onglets de 1 à 18 ).

J'ai deux macro qui normalement permettent de réaliser cela mais ça ne fonctionne pas : une première qui vérifie que les données sont bien dans le tableau ( Worksheet_BeforeDoubleClick) et une qui envoie les mails ( EnvoiMail ).

Voici le lien contenant mon fichier : https://www.cjoint.com/?0KnmqsYSanR


Merci d'avance pour votre aide.

Bonne journée ! :)

A voir également:

7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 13/11/2014 à 14:36
Bonjour,

Worksheet_BeforeDoubleClick
comme c'est indique (Worksheet) doit etre dans le VBA de la feuille "semaine1" sans oublier
Cancel=True
, pas dans un module !!!!!!!
0
anizzz Messages postés 17 Date d'inscription mercredi 17 septembre 2014 Statut Membre Dernière intervention 20 novembre 2014
14 nov. 2014 à 09:58
Bonjour,

Merci pour votre réponse. La macro fonctionne mais fait bugger Excel dès que je clique sur un nom donc que j'envoie un seul mail. Cette méthode n'est donc pas terrible sachant que je dois envoyer à 35 personnes ...

Y 'a t'il possibilité d'avoir un macro qui en appuyant sur un bouton envoie au auditeurs la carte qui leur est assignée ?

Merci d'avance ! :)
0
anizzz Messages postés 17 Date d'inscription mercredi 17 septembre 2014 Statut Membre Dernière intervention 20 novembre 2014
20 nov. 2014 à 10:48
Bonjour,

Ma macro fonctionne si le numéro de carte est toujours dans la colonne B ce qui est normal car on lui dit d'envoyer l'onglet dont le numéro se trouve colonne B :
sOnglet = Range("B" & Target.Row).Value
.

Comment faire en sorte qu'il récupère le numéro de carte dans la bonne case sachant que la colonne varie selon la personne à qui on veut envoyer le mail ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
20 nov. 2014 à 11:42
Bonjour,

Vous avez le numero dans colonne B ou K ou T ou AC ou AL suivant la personne. Testez les cellules de la iigne et prenez celle qui a un numero puisqu' il n'y en a qu'une qui a un numero
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anizzz Messages postés 17 Date d'inscription mercredi 17 septembre 2014 Statut Membre Dernière intervention 20 novembre 2014
20 nov. 2014 à 14:36
Mon problème est pour écrire le code correspondant au test...

On modifie la définition de l'onglet ?
 sOnglet = Range("B" & Target.Row).Value 


Je suis un peu perdue ...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
20 nov. 2014 à 15:40
Re,

Je suis un peu perdue ... Mais non !! Je vous faits le code avec le fichier du debut

A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
20 nov. 2014 à 16:10
Re,

une facon de faire, ai repris un peu votre code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sOnglet As String
Dim sAdresseMail As String
Dim sTexteMail As String, lig As Integer
Dim TNcarte, Point As Byte, LCol As String

If Not Application.Intersect(Target, Range("A5:A209")) Is Nothing And Target.Count = 1 And Target.Value <> "" Then
Cancel = True
'tableau colonne Num Carte
TNcarte = Array("B", "K", "T", "AC", "AL")
lig = Target.Row
LCol = ""
'boucle de recherche Num Carte
For Point = 0 To 4
If Cells(lig, TNcarte(Point)) <> Empty Then
LCol = TNcarte(Point)
Exit For
End If
Next Point
' test si trouve
If LCol <> "" Then
sOnglet = Range(LCol & lig).Value
Else
MsgBox "Veuillez renseigner le n° de carte (cellule " & LCol & lig & ")", vbExclamation
Exit Sub
End If
sAdresseMail = Range("AU" & lig).Value
If sAdresseMail = "" Then
MsgBox "Veuillez renseigner l'adresse mail (cellule AU" & lig & ")", vbExclamation
Exit Sub
End If
sTexteMail = Range("AV" & lig).Value
If sTexteMail = "" Then
MsgBox "Veuillez renseigner le texte du mail (cellule AV" & lig & ")", vbExclamation
Exit Sub
End If
EnvoiMail sOnglet, sAdresseMail, sTexteMail
End If
End Sub


A+
0