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 automatique pb destinataire [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut envoi mail automatique pb destinataire
    Bonjour,

    lorsque j'exécute le programme, il me dit qu'il ya une erreur d'exécution au niveau du destinataire. La zone 'à' doit contenir au moins un nom ou une liste de distribution. (La partie du code concernée est en italique.)

    Lorsque j'affiche le contenu de mail avant d'appeler 'EnvoiMessage', il contient bien l'adresse du destinataire mais après dans 'EnvoiMessage', la variable Mail est vide.

    Et pourtant ce code fonctionne très bien pour un autre fichier.

    Quelqu'un aurait-il une solution ?


    PS : J'utilise Outlook 11.0


    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment
    
    Sub MailItNow()
    
        Dim Test As Integer
        Dim i As Integer
        Dim Qui(300) As String
        Dim Tache(300) As String
        Dim Agence As String
        Dim Mail As String
        Dim Mail2 As String
        Dim CorpsMail As String
            
        Application.ScreenUpdating = False
            
        Test = 0
        Agence = Range("B1").Value
        
        
        For i = 1 To 246
    
            If Range("K" & i).Value = "Retard" Then
    
                Test = 1
                Qui(i) = Range("D" & i).Value
    
                Tache(i) = Range("A" & i).Value
                                      
                If Test = 1 Then
    
                Mail = Range("M" & i).Value
                    
                CorpsMail = "Bonjour" & ", " & vbCrLf & vbCrLf _
                 & "sauf erreur de notre part , il semblerait quil y ait du retard pour l'éxecution d'une tâche dans le planning des Nouvelles Agences concernant l'agence de " & Agence & "." & vbCrLf & vbCrLf & _
                 "La tâche qui semble ne pas avoir été effectuée dans les délais est la suivante : " & Tache(i) & "." & vbCrLf & vbCrLf & _
                 "Pourriez-vous régulariser cela ?" & vbCrLf & vbCrLf & _
                 "Cordialement"
                
                Call EnvoiMessage
                    
                End If
            
            End If
            
            Next i
            
            If Test = 0 Then
    
                MsgBox ("Il n'y a aucun retard !")
    
            End If
        
    End Sub
    
    
    Sub EnvoiMessage(Optional Pieces_Jointes)
        
        On Error Resume Next
    
        Set objOutlook = CreateObject("Outlook.Application")
    
        Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
        
        With objOutlookMsg
            Set objOutlookRecip = .Recipients.Add(Mail)
            objOutlookRecip.Type = olTo
            
            .Subject = "retard"
            .body = CorpsMail
            .Importance = olImportanceNormal
            
            
            If Not IsMissing(Pièces_Jointes) Then
                Set objOutlookAttach = .Attachments.Add(Pièces_Jointes)
            End If
            
            
            For Each objOutlookRecip In .Recipients
                objOutlookRecip.Resolve
                If Not objOutlookRecip.Resolve Then
                Exit Sub
            End If
            Next
            
            .Send
        
        End With
        
        
        Set objOutlookMsg = Nothing
        Set objOutlook = Nothing
    End Sub

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez avec votre code dans lequel j'ai apporté des corrections

    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
    62
    63
    64
    65
     
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim objOutlookAttach As Outlook.Attachment
    Dim Mail As String
    Dim CorpsMail As String
     
    Sub MailItNow()
     
    Dim Test As Integer
    Dim i As Integer
    Dim Qui(300) As String
    Dim Tache(300) As String
    Dim Agence As String
    Dim Mail2 As String
     
    Application.ScreenUpdating = False
    Test = 0
    Agence = Range("B1").Value
    For i = 1 To 246
        If Range("K" & i).Value = "Retard" Then
            Test = 1
            Qui(i) = Range("D" & i).Value
            Tache(i) = Range("A" & i).Value
            If Test = 1 Then
              Mail = Range("M" & i).Value
              CorpsMail = "Bonjour" & ", " & vbCrLf & vbCrLf _
               & "sauf erreur de notre part , il semblerait quil y ait du retard pour l'éxecution d'une tâche dans le planning des Nouvelles Agences concernant l'agence de " & Agence & "." & vbCrLf & vbCrLf & _
               "La tâche qui semble ne pas avoir été effectuée dans les délais est la suivante : " & Tache(i) & "." & vbCrLf & vbCrLf & _
               "Pourriez-vous régulariser cela ?" & vbCrLf & vbCrLf & _
               "Cordialement"
              Call EnvoiMessage
            End If
        End If
    Next i
    If Test = 0 Then
        MsgBox ("Il n'y a aucun retard !")
    End If
    End Sub
     
     
    Sub EnvoiMessage(Optional Pieces_Jointes)
    On Error Resume Next
    Set objOutlook = CreateObject("Outlook.Application")
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
        Set objOutlookRecip = .Recipients.Add(Mail)
        objOutlookRecip.Type = olTo
        .Subject = "retard"
        .body = CorpsMail
        .Importance = olImportanceNormal
        If Not IsMissing(Pieces_Jointes) Then
            Set objOutlookAttach = .Attachments.Add(Pieces_Jointes)
        End If
        For Each objOutlookRecip In .Recipients
            objOutlookRecip.Resolve
            If Not objOutlookRecip.Resolve Then
                Exit Sub
            End If
        Next
        .Send
    End With
    Set objOutlookMsg = Nothing
    Set objOutlook = Nothing
    Cordialement.

    PMO
    Patrick Morange

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé votre code mais il ne fonctionne pas non plus
    Et l'erreur est toujours au même endroit : au niveau de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With objOutlookMsg
            Set objOutlookRecip = .Recipients.Add(Mail)
            objOutlookRecip.Type = olTo

    Avant cette partie de code, tout s'execute sans problème.

    Il semblerait que la variable 'mail' soit vide ...

  4. #4
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Il semblerait que la variable 'mail' soit vide ...
    Déclares ta variable Mail en public



  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pourquoi ne pas utiliser simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With objOutlookMsg
        .To=Mail
        .Subject = "retard"
        ........
    D'autre part, plutôt que de travailler avec des variables modulaires, j'aurai plus utilisé l'envoi de paramètres à la procédure EnvoiMessage

    --------------
    Frédéric
    http://www.access-developpement.com

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'avais pas pensé à utiliser la déclaration en public. Merci 'casavba', ça fonctionne.

    Pourquoi ce code ? Tout simplement parce que j'ai eu quelques problèmes avec des sauts de ligne à l'intérieur du corps de mon mail.

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

Discussions similaires

  1. [Toutes versions] Fonction envoi mail automatique : modifier le destinataire
    Par Balmarugby dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/07/2013, 12h20
  2. envoi mail automatique a plusieur personne avec critère et Pj
    Par popofpopof dans le forum VBA Access
    Réponses: 9
    Dernier message: 26/02/2010, 10h51
  3. Envoi mail automatique
    Par sticker dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/02/2007, 17h19
  4. [phpBB] Envoi mail automatique quand on clique sur un bouton
    Par Nicca dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 08/12/2006, 12h42
  5. envoi mail automatique apres confirmatin d'inscription
    Par Chonchon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 18h28

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