IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

envoi mail avec conditions multiples


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut envoi mail avec conditions multiples
    Bonjour,

    je voudrais envoyer un mail a plusieurs destinataires, en récupérant les adresses mail dans une colonne et en ayant 2 condition qui sont des statuts (0 ou 3) et (TRUE ou FALSE) sur la meme ligne que le mail.
    De plus je voudrais qu'il envoie le mail une seul fois et non à chaque fois qu'il rencontre une adresse mail (certaine personnes sont présente plus de 10x = 10 mail).

    Merci d'avance de m'aider, je vous en serai tres reconnaissant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub Create_Mail_Control_()
     
        Dim OutApp As Object
        Dim OutMail As Object
        Dim cell As Range
        Dim StrBody As String
     
        Application.ScreenUpdating = False
        Set OutApp = CreateObject("Outlook.Application")
     
        On Error GoTo cleanup
        For Each cell In Columns("G").Cells.SpecialCells(xlCellTypeConstants)
            If cell.Value Like "?*@?*.?*" And _
               (Cells(cell.Row, "M").Value) = "0" And _
              cela ne marche pas ==>(Cells(cell.Row, "K").Value) = "TRUE" Then
       'ajouter la condition colonne "K" = "TRUE"
       'probleme de redondance avec les adresses mail, si le mail est envoyé a <a href="mailto:xxx@xxx.com">xxx@xxx.com</a> ne pas le renvoyer ==> je ne sais pas comment faire
     
                Set OutMail = OutApp.CreateItem(0)
                On Error Resume Next
                With OutMail
                    .To = cell.Value
                    '.cc = "monboss@xxx.com"
                    .Subject = "Control" & Cells(cell.Row, "C")
                    .Body = "Hi " & Cells(cell.Row, "F").Value & vbCrLf & vbCrLf & "Could you please fill the file available on..." 
                    .Attachments.Add ("F:\")
                    .Send
     
                End With
                On Error GoTo 0
                Set OutMail = Nothing
            End If
        Next cell
     
    cleanup:
        Set OutApp = Nothing
        Application.ScreenUpdating = True
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Utilise les balise CODE (#) pour poster du code.
    Test ce qui suit (j'ai pas testé du tout), avec un dictionnaire pour les adresses uniques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Sub Create_Mail_Control_()
     
        Dim OutApp As Object
        Dim OutMail As Object
        Dim Dico As Object
        Dim Plage As Range
        Dim cell As Range
        Dim StrBody As String
     
        Application.ScreenUpdating = False
     
        Set OutApp = CreateObject("Outlook.Application")
     
        Set Dico = CreateObject("Scripting.Dictionary")
     
        Set Plage = Range([G1], [G65536].End(xlUp))
     
        On Error GoTo cleanup
     
        For Each cell In Plage
     
            If cell.Value Like "?*@?*.?*" And cell.Offset(0, 6) = 0 And cell.Offset(0, 4) = True Then
     
                Set OutMail = OutApp.CreateItem(0)
     
                On Error Resume Next
     
                With OutMail
     
                    'n'envoi que si l'adresse est unique
                    If Dico.Exists(cell.Value) = False Then
                        'si elle n'existe pas dans le dictionnaire, l'ajoute
                        'de façon à ce qu'il n'y est plus d'envoi à cette adresse
                        Dico.Add cell.Value, cell.Value
     
                        .To = cell.Value
                        '.cc = "monboss@xxx.com"
                        .Subject = "Control" & cell.Offset(0, -4)
                        .Body = "Hi " & cell.Offset(0, -1) & vbCrLf & vbCrLf & "Could you please fill the file available on..."
                        .Attachments.Add ("F:\")
                        .Send
     
                    End If
     
                End With
     
                On Error GoTo 0
     
                Set OutMail = Nothing
     
            End If
     
        Next cell
     
    cleanup:
        Set OutApp = Nothing
     
        Application.ScreenUpdating = True
     
    End Sub
    Hervé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut
    merci pour ta réponse, a priori cela fonctionne bien, sauf que je ne peux pas faire de test car le dico une fois qu'il a enregistré l'adresse ne renvoie plus de mail!

    thibault

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir Thibault,

    C'est normal que tu ne puisse plus renvoyer un mail une fois que l'adresse est enregistrée dans le dico, c'est ce que tu voulais non ?
    De plus je voudrais qu'il envoie le mail une seul fois et non à chaque fois qu'il rencontre une adresse mail (certaine personnes sont présente plus de 10x = 10 mail).
    Hervé.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut
    bonjour Hervé,

    En fait le fichier dont on parle doit etre ouvert tous les jours, la macro vérifie si les utilisateurs ont fait ou non leurs contrôles et s'il ne l'ont pas fait elle leurs envoie un mail pour leur dire de le faire.
    L'objectif étant que je puisse la faire tourner tous les jours et relancer dans ce cas les personnes tous les jours jusqu'à ce que le fichier soit remplis.
    Dans ce fichier il y a plusieurs deadlines différentes pour un ou plusieurs utilisateurs, la macro va cherche dans le fichier et si la valeur est "true" c'est que la deadline est dépassé donc il doit envoyé un mail. Donc il faut pouvoir envoyé un mai meme si la personne est dans le dico puisqu'il peut y avoir d'autre contrôles non effectuer par l'utilisateur.
    Je sais pas si tu as compris la problématique.

    merci en tout cas pour tes réponses, je continue à chercher un moyen pour y arriver.

    thib

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut
    merci pour le dictionnaire, j'ai trouvé la solution.
    merci pour ton aide et bonne continuation.

    cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Envoi mail avec condition
    Par tifil dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 27/04/2015, 23h17
  2. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  3. envoi mail avec condition
    Par liloo974 dans le forum VBScript
    Réponses: 2
    Dernier message: 28/08/2007, 10h35
  4. Envoi mail avec Outlook accusé de réception
    Par KapoueMan dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2005, 10h41
  5. envoi mail avec piece jointe fichier excel
    Par flogreg dans le forum ASP
    Réponses: 12
    Dernier message: 20/12/2004, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo