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 plage cellules corps mail


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2020
    Messages : 1
    Par défaut Envoi plage cellules corps mail
    Bonjour,

    Je cherche à envoyer dans le corps d'un mail une plage de cellule définie par une macro qui génère l'adresse de cette plage de cellules. Je souhaite que le mail soit envoyé au président délégué qui gère la section.

    Par exemple pour la section de l'AIN (N°1) j'aimerais envoyer dans le corps d'un mail la plage de cellules (A1:G6) au président délégué de l'AIN, monsieur MEGE (bonjour@gmail.com2). Pour la section de l'AISNE (N°2) j'aimerais envoyer dans le corps d'un mail la plage de cellules (A7:G11) au président délégué de l'AISNE, monsieur BERTRAND (bonjour@gmail.com8).

    Et ainsi de suite, j'ai environ 80 sections différentes, donc 80 plages de celulles à insérer dans des mails à envoyer aux présidents délégués de chaque section (donc 80 mails au total à envoyer).

    J'ai fait 2 macros : une première qui détermine les coordonnées des plages de cellule à envoyer et une seconde qui doit normalement envoyer par mail au président délégué de la section la bonne plage de cellule.

    Nom : Fichier Mail.png
Affichages : 2689
Taille : 22,1 Ko

    J'ai 2 problèmes :

    Dans ma seconde macro, je ne pense pas avoir la bonne syntaxe pour incorporer une plage de cellules dans un mail
    Je ne suis pas sûr de pouvoir relier les 2 macros entre elles (je ne sais pas bien si je dois créer des procédures ou des fonctions et comment récupérer les variables de la première macro dans la seconde).
    Voici mon fichier :

    mail-et-plage-de-cellules.xlsm

    Cela fait plusieurs jours que je regarde des tutos sur YT pour essayer de comprendre comment faire, mais toutes mes tentatives sont infructueuses. Si vous pouviez me donner un coup de pouce, ça m'aiderait beaucoup

    Merci d'avance pour votre aide,

    Romain

  2. #2
    Membre éprouvé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 113
    Par défaut
    Bonjour,

    Vous trouverez certainement votre bonheur ici : https://excel.developpez.com/faq/?page=Messagerie

    Bàv,

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    partant du principe que tu utilises Outlook pour l'envoi, adresser une cellule s'effectue ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HTMLBody = Range("MaCellule")   ' ou .Body éventuellement
    en revanche, si la plage comporte plus d'une cellule, il va falloir convertir ta plage en html pour ensuite l'intégrer au HTMLBody de ton mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HTMLBody = RangetoHTML(MaPlage)
    avec la fonction RangetoHTML comme-ci :

    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
    Function RangetoHTML(ByVal Rng As Range)
        Dim fso As Object
        Dim ts As Object
        Dim TempFile As String
        Dim TempWB As Workbook
     
        TempFile = VBA.Environ$("temp") & "\" & VBA.Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
        Rng.Copy
        Set TempWB = Workbooks.Add(1)
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=12
            .Cells(1).PasteSpecial Paste:=-4122
            .Cells(1).Select
            Application.CutCopyMode = False
            On Error Resume Next
                .DrawingObjects.Visible = True
                .DrawingObjects.Delete
                .Columns.AutoFit
            On Error GoTo 0
        End With
     
        With TempWB.PublishObjects.Add(SourceType:=xlSourceRange, Filename:=TempFile, Sheet:=TempWB.Sheets(1).Name, Source:=TempWB.Sheets(1).UsedRange.Address, HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
        RangetoHTML = ts.ReadAll
        ts.Close
        RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", "align=left x:publishsource=")
        TempWB.Close savechanges:=False
        Kill TempFile
     
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
    End Function

  4. #4
    Invité
    Invité(e)
    Par défaut A Pierre FAUCONNIER si tu lis ce message.
    Bonjour Pierre,

    Il y a quelques mois, tu me demandais d’apporter un commentaire sur un de tes blogs consacré à Power Query. Je m’y suis mis très dernièrement. Pour cela, j’ai voulu comparer son fonctionnement avec la méthode du filtre avancé que j’utilise jusqu’à présent.

    Le mode opératoire que tu as mis en ligne est très bien fait Power-query-excel-alternative-efficace-filtre-avance-dynamique. En conclusion, essayer, c'est l'adopter.

    Après plusieurs exemples, j’ai regardé comment je pouvais répondre à ce billet dans lequel se trouve une structure de données un peu étonnant (Laviro18 : ne vous vexez pas). Le résultat est dans le fichier joint.

    J’ai ensuite automatisé l’envoi des mails comme il était demandé. Pour cela, j’ai créé un événement Change dans l’onglet qui contient la table Power Query et j’ai ajouté un bouton pour lancer une boucle comme je l’aurais fait avec ma méthode Filtre avancé.
    Pièce jointe 585647

    Lorsque la valeur du département change par action manuelle, tout fonctionne correctement, la table Power Query est bien mise à jour.

    En revanche, lorsque la valeur change via la macro enclenchée par le bouton Lancer le mailing, la table Power Query n’est pas mise à jour. Alors qu’avec la méthode du filtre avancé, cela fonctionne sans problème.
    Aurais-tu répondu déjà à ce problème ?

    Cordialement.

  5. #5
    Invité
    Invité(e)
    Par défaut Power query : décocher l'activation en arrière plan
    Comme suite à mon dernier message : problème résolu. Il faut décocher Activer l'actualisation en arrière plan.
    Pièce jointe 585670

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Eric

    J'étais en train d'essayer de comprendre le problème lorsque tu y as apporté la solution
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Bonjour,

    Merci Pierre,

    Peut être devrais-tu compléter un de tes modes opératoires pour informer de cette particularité.

  8. #8
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour Pierre, Eric,

    J'utilise Power Query dans un dev très similaire à celui expliqué ici.
    Envois de plusieurs tables filtrées via PQ et Vba.

    Pour éviter ce souci de refresh, on peut lors de l'événement changement de cellule par exemple, faire le refresh de la table en utilisant la ligne de code ( pas testé, je suis sur mon smartphone):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("nomTable").Listobject.QueryTable.Refresh BackgroundQuery:=False
    Avec cette méthode, tant que le refresh n'est pas complet, l'instruction de code suivante (envois de mail) ne se fera pas.
    Ça évite, de devoir modifier dans les paramètres PQ.

    Je me suis construit une petite fonction, qui reçois en paramètre les différentes tables qui doivent subir un refresh, et ainsi j'actualise mes tables liées à PQ, dans l'ordre que je souhaite, on peut donc utiliser des tables dépendantes plus facilement.


    Bav,

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Bonjour Mickaël,

    Merci, je vais regarder cela de plus près.

    Cordialement.

Discussions similaires

  1. [XL-2013] Envoie de cellule en reponse a un mail
    Par ddmot74 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2019, 12h58
  2. Envoi Auto Fichier XL par mail Avec sujet et corps mail
    Par apo1803 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/02/2017, 13h20
  3. [XL-2010] Rajouter valeur cellule dans corps mail
    Par alexandrud dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/10/2014, 09h01
  4. perl-MIME-Lite n'envoie plus d'e-mail : prérequis ?
    Par kafifi dans le forum Modules
    Réponses: 6
    Dernier message: 25/11/2005, 13h12
  5. Envoi automatique d'un mail toutes les heures
    Par VirginieGE dans le forum ASP
    Réponses: 8
    Dernier message: 24/08/2004, 08h10

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