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 :

Envoyer des mails à partir d'excel [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Envoyer des mails à partir d'excel
    Bonjour, je rencontre un problème sur une macro.
    Je connais la cause de ce message généré par le système. Le problème vient d'une colonne intitulé "Adresse mail" j'y ai mis une formule =SI('Formulaire Emprunt'!E54=AUJOURDHUI();'Formulaire Emprunt'!D54;"") que je copie sur toutes les cellules de la colonne A, (cette formule s'appuie sur une autre feuille) l'adresse mail alors s'affiche automatiquement que par cette condition. Par contre l'envoi s’effectue, mais un message d'erreur apparait "ERREUR d'exécution 2147467259 (800004005 nous avons besoin de connaître le destinataire" débogage à msg.Send...La macro doit détecter cette formule sans être une adresse mail valide, je présume ! Auriez-vous une solution? Pour mieux comprendre le soucis, je joins le fichier. Un grand merci par avance. Bien cordialement

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 183
    Par défaut
    Hello,

    le fichier est un XLSX donc sans macro et il est plein de noms et d'adresses mail, j'espère qu'elles sont bidons

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Envoyer des mails depuis Excel
    Oups désolée, je viens de modifier le fichier, merci d'avoir consulter. Je n'ai pas de compétences dans les codes VBA, pensez-vous que l'on puisse résoudre ce problème d'erreur ? Encore toutes mes excuses pour le précédent envoi. Bien à vous
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 183
    Par défaut
    Citation Envoyé par unice Voir le message
    Je connais la cause de ce message généré par le système. Le problème vient d'une colonne intitulé "Adresse mail" j'y ai mis une formule =SI('Formulaire Emprunt'!E54=AUJOURDHUI();'Formulaire Emprunt'!D54;"")
    Je ne crois pas que la cause soit l'adresse qui est affiche via une formule, je soupçonne plutôt les msg.CC et msg.BCC qui sont vide de considérer que l'adresse n'est pas valide.
    J'ai modifié/réorganisé votre macro, testez là comme ça (je ne peux pas le faire de mon coté) et dites nous

    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
    Sub Envoi_mails()
     
        Dim i As Integer
        Dim msg As Object
        Dim last_row As Integer
     
        Dim OA As Object
        Set OA = CreateObject("outlook.application")
     
        With ThisWorkbook.Sheets("Envoi mails")
     
            last_row = Application.CountA(.Range("A:A"))
     
            For i = 2 To last_row
                If .Range("H" & i).Value <> "NON" Then
                    Set msg = OA.CreateItem(0)
                    msg.To = .Range("A" & i).Value
     
                    If .Range("B" & i).Value <> "" Then
                        msg.CC = .Range("B" & i).Value
                    End If
     
                    If .Range("C" & i).Value <> "" Then
                        msg.BCC = .Range("C" & i).Value
                    End If
     
                    msg.Subject = .Range("D" & i).Value
                    msg.Body = .Range("E" & i).Value
     
                    If .Range("F" & i).Value <> "" Then
                        msg.Attachments.Add .Range("F" & i).Value
                    End If
     
                    If .Range("G" & i).Value <> "" Then
                        msg.Attachments.Add .Range("G" & i).Value
                    End If
     
                    msg.Send
     
                    .Range("I" & i).Value = "Envoyé"
                End If
     
            Next i
            MsgBox "Messages Envoyés"
     
        End With
    End Sub

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous déposez un classeur qui contient des liaisons dont les feuilles ont des colonnes cachées.

    Votre problème vient du fait que vous calculez le nombre de lignes avec la fonction NBVAL de la colonne A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    last_row = Application.CountA(sh.Range("A:A"))
    Comme vous avez des liaisons dans cette colonne il compte le nombre de lignes à 34 et évidemment comme les cellules des autres colonnes de ces lignes sont vides, c'est l'erreur fatale

    Je vous conseille déjà d'utiliser les tableaux structurés bien plus simple à utiliser
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 183
    Par défaut
    Bien vu Philippe
    Par contre comme unice ajoute des lignes avec des formules, je ne vois pas comment rendre le TS de la feuille "Envoi mails" dynamique

    Je corrige quand même mon code en tenant compte du "" de la colonne A
    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
    Sub Envoi_mails()
     
        Dim i As Integer
        Dim msg As Object
        Dim last_row As Integer
     
        Dim OA As Object
        Set OA = CreateObject("outlook.application")
     
        With ThisWorkbook.Sheets("Envoi mails")
     
            last_row = Application.CountA(.Range("A:A"))
     
            For i = 2 To last_row
                If .Range("A" & i).Value <> "" Then
     
                    If .Range("H" & i).Value <> "NON" Then
                        Set msg = OA.CreateItem(0)
                        msg.To = .Range("A" & i).Value
                        msg.CC = .Range("B" & i).Value
                        msg.BCC = .Range("C" & i).Value
                        msg.Subject = .Range("D" & i).Value
                        msg.Body = .Range("E" & i).Value
     
                        If .Range("F" & i).Value <> "" Then
                            msg.Attachments.Add .Range("F" & i).Value
                        End If
     
                        If .Range("G" & i).Value <> "" Then
                            msg.Attachments.Add .Range("G" & i).Value
                        End If
     
                        msg.Send
     
                        .Range("I" & i).Value = "Envoyé"
                    End If
     
                End If
     
            Next i
            MsgBox "Messages Envoyés"
     
        End With
    End Sub

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Jièl,
    Par contre comme unice ajoute des lignes avec des formules, je ne vois pas comment rendre le TS de la feuille "Envoi mails" dynamique
    Un tableau structuré propage automatiquement les formules et si tu fais allusion à la formule de la colonne A, on peut très bien utiliser Power Query qui construit automatiquement un tableau structuré mais je pense que le problème initial est une mauvaise conception des données mais sans en savoir plus, difficile d'apporter une réponse pertinente.

    Les liaisons entre classeurs sont à proscrire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 183
    Par défaut
    Oui tu as raison Philippe, mauvaise conception des données, de plus le TS de la feuille "Formulaire emprunt" continu au delà de la colonne P avec des intitulé Colonne203 jusqu'à Colonne15593 soit la colonne VTO et les lignes jusqu'à 499... pour rien (et tout est formaté bien sûr)

    J'oublie toujours ce sacré Power Query, un de ces jours je vais m'y mettre réellement, ça à l'air d'un truc vraiment puissant quand on le maitrise.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Jièl,
    J'oublie toujours ce sacré Power Query, un de ces jours je vais m'y mettre réellement, ça à l'air d'un truc vraiment puissant quand on le maitrise.
    Pour transformer les données c'est génial et tu développes cinq fois plus vite qu'avec le VBA.
    Lorsque je dispense des formations VBA, c'est ma première question aux stagiaires. "Pourquoi voulez-vous utiliser le VBA ?". Dans 93% des cas, c'est pour automatiser des copies de fichiers avec des transformations des données. Je leur répond qu'il vaut mieux apprendre le Power Query. Je leurs fais une démo d'une petite heure et ils sont convaincus et commande une formation "Power Query"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 183
    Par défaut
    Hello Philippe
    Citation Envoyé par Philippe Tulliez Voir le message
    Lorsque je dispense des formations VBA, c'est ma première question aux stagiaires. "Pourquoi voulez-vous utiliser le VBA ?".
    J'ai eue aussi des cas comme ça il y a fort longtemps, à l'époque des menus, et tout le monde se disait que "Macros" ça devait être un truc magique qui faisait tout tout seul, et aucun stagiaire n'avait la moindre compétence en programmation .
    Dans 80% des cas les problèmes étaient solutionnées par des fonctions de calcul

  11. #11
    Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Merci pour la correction
    Bonjour Messieurs,
    déjà un grand merci de répondre à ces nombreuses demandes, je suis loin comme vous pouvez l'imaginer d'être une pro, Bon, vous avez déjà résolu le problème, j'ai aussi supprimer tout les lignes qui n'avaient pas lieu d'être ...et je ne connais absolu pas le Power Query. Avant cette base était sur Access et fonctionnait avec des requêtes, et je ne vois pas autrement aujourd'hui que de travailler avec des liaisons entre classeurs. Un grand merci à tous les deux..

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne connais absolu pas le Power Query
    Power Query est intégré dans Excel depuis la version 2016 (voir le groupe Récupérer et transformer des données de l'onglet [Données]
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [OL-2007] Envoyer des mails prédéfinis en auto avec liste excel
    Par toniob44 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 08/05/2013, 20h56
  2. Envoyer des mails d'excel vers Lotus Notes
    Par HERVE57 dans le forum Lotus Notes
    Réponses: 1
    Dernier message: 15/02/2012, 14h03
  3. [XL-2003] Envoyer des mails à partir de Excel.
    Par rico63 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/10/2010, 13h28
  4. Envoyer des mails à partir d'excel
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/11/2007, 17h01
  5. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28

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