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

anizzz Messages postés 22 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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 ! :)

7 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. anizzz Messages postés 22 Statut Membre
     
    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
  3. anizzz Messages postés 22 Statut Membre
     
    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
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. anizzz Messages postés 22 Statut Membre
     
    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
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

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

    A+
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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