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 de mail à date limite [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    animateur qse
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : animateur qse
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Par défaut Envoi de mail à date limite
    Bonjour à tous,

    avant de me décider à poster et demander votre aide, j'ai tout de même éplucher les différents sujets ayant été traité notamment:

    http://www.developpez.net/forums/d13...nction-d-date/
    http://www.developpez.net/forums/d10...59-80004005-a/

    dont je me suis fortement inspiré je ne le cacherai pas!

    Je cherchais à créer un fichier d'envoi de mail automatique (chaque lundi) et à la demande via bouton.
    à partir des codes trouvés sur ce forum j'ai donc réalisé un classeur composé de 2 feuilles:
    -l'un servira d'index pour remplissage
    -tandis que l'autre servira pour le calcul et sera masquée.

    l'outils passe par MicrosoftOutlook, bien entendu l'adresse mail renseigné ne correspond pas à celles qui seront utilisées.
    Ce code à été testé avec une adresse mail outlook mais lors du test d'envoi de mail, il s'avère que la commande ".send" ne fonctionne pas.

    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
    Sub Alertes()
        Dim B As Range, OL As Object, M As Object, Plage As Range
        Set olApp = CreateObject("Outlook.application")
        With Sheets("Service technique2")
            Set Plage = .Range(.[H4], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        For Each B In Plage
            If B.Offset(, 5) - Date <= 70 Then
              Set M = olApp.CreateItem(olMailItem)
              With M
                  .Subject = "Alerte fin de validité d'habilisation BR"
                  .Body = B.Offset(, 19)
                  .Recipients.Add B.Offset(, 20)
                  .send
               End With
            End If
            If B.Offset(, 8) - Date <= 70 Then
              Set M = olApp.CreateItem(olMailItem)
              With M
                  .Subject = "Alerte fin de validité Caces"
                  .Body = B.Offset(, 19)
                  .Recipients.Add B.Offset(, 20)
                  .send
               End With
            End If
            If B.Offset(, 11) - Date <= 70 Then
              Set M = olApp.CreateItem(olMailItem)
              With M
                  .Subject = "Alerte fin de validité Formation SST"
                  .Body = B.Offset(, 19)
                  .Recipients.Add B.Offset(, 20)
                  .send
               End With
            End If
            If B.Offset(, 14) - Date <= 70 Then
              Set M = olApp.CreateItem(olMailItem)
              With M
                  .Subject = "Alerte fin de validité Formation CHSCT"
                  .Body = B.Offset(, 19)
                  .Recipients.Add B.Offset(, 20)
                  .send
               End With
            End If
            If B.Offset(, 17) - Date <= 70 Then
              Set M = olApp.CreateItem(olMailItem)
              With M
                  .Subject = "Alerte fin de validité FIMO - FCO"
                  .Body = B.Offset(, 19)
                  .Recipients.Add B.Offset(, 20)
                  .send
               End With
            End If
        Next B
    End Sub
    j'insiste sur le fait que j'ai planché dessus, mais le problème dépasse mes compétences.
    Vous trouverez en pièce jointe le fichier.

    Si une âme charitable pouvez me venir en aide ca serait top!

    Par avance merci.

    Oncle Ben
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Y a-t-il un message d'erreur ? si oui, lequel ?
    Est-ce qu'Outlook est ouvert lorsque tu démarres ta macro ?

  3. #3
    Membre régulier
    Homme Profil pro
    animateur qse
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : animateur qse
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Par défaut
    hello, merci de ta réponse.

    oui outlook est ouvert et connecté.
    avec la version où l'adresse renseignée est outllook, le message d'erreur qui apparait est le suivant:

    erreur d'exécution '-2147467259 (80004005)'
    impossible de reconnaître un ou plusieurs nom

    suite à quoi je cherche à comprendre pourquoi en cliquant débogage et le surlignage se fait au niveau de la commande .send

    Pour information, je compte également rajouter un code permettant l'activation à fréquence définit (chaque lundi).
    Afin que l'envoi de mail ne se fasse pas tous les jours et que l'information ne passe pour un spam.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Et si tu mettais un msgbox avant les .Send ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Msgbox B.Offset(, 20)
    'ou encore
    Debug.Print B.Offset(, 20)
    Peut-être que ton code essaie d'envoyer un mail à une adresse vide (?)

    Tu pourrais aussi remplacer les .Send par .Display le temps de voir que tout fonctionne bien.

  5. #5
    Membre régulier
    Homme Profil pro
    animateur qse
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : animateur qse
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Par défaut
    J'ai remplacé la fonction send par display et en plus j'ai mis msgbox pour trouvé l'erreur.

    voici les erreurs remontées:

    - l'outils s’arrête dès la première ligne Nom1 Prénom1
    - s'ouvre bien des fenêtres outlook, mais celles-ci ont en adresse destinataire ce qui correspond au corps du mail dans le tableau.

    la commande msg box a remonté les même erreurs.

    est-ce simplement une erreur dans le recipient.add B.offset (, x) ?

    j'ai donc décalé de 1 les B.offset(, x)

    résultat cela fonctionne.
    néanmoins j'ai toujours le msg d'erreur dans vba:
    erreur d'exécution '440':
    les zones A, Cc, Cci doivent contenir au moins un nom ou un groupe de contacts.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Lorsque la partie .Display est passée, le message est accessible dans Outlook.
    Il faut regarder toutes les parties du message et trouver les incohérences.
    C'est certain qu'Outlook n'aimera pas si l'adresse courriel est le texte du body...
    Il y a donc probablement différents ajustements à faire sur les Offset que tu utilises.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/09/2015, 10h38
  2. [XL-2007] Alerte Dates d'échéance pas envoi de Mail
    Par pasterlouis dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/05/2013, 23h34
  3. Envoie de mail avec php dans une date precise
    Par salimtrois dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 04/04/2012, 18h50
  4. Envoi e-mail automatiquement à une date precise
    Par sooprano dans le forum Langage
    Réponses: 10
    Dernier message: 23/11/2008, 22h03
  5. [MySQL] Envoi de mails selon une heure et une date donnée stockée
    Par vw91 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/06/2008, 12h00

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