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 à partir d'Excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut Envoi de Mail à partir d'Excel
    Bonjour a tous,

    Dans mon fichier Excel, dans la colonnes "J " j'ai le Nom et Pernom de trois personnes qui sont des chefs de projet

    Ce que je veux faire, c'est de realiser une macro qui identifié le nom et prenom de chaque de ces personne pour leur envoyer un mail.

    Je veux proceder comme suit car j'ai des raisons qui sont longues expliquer :

    1. Dans le code je metterai les mails de ces personnes en dur sachant que tous les mails ont cette forme prenom.nom@hotmail.fr

    2. Puis je veux comparer les noms des personnes qui sont dans la colonne J aux mails posés dans le code
    si un nom et prenom sont identiquent au début d'un mail bien sur avant le "@" et sans prendre en compte le point (.) qui entre le nom et prenom du mail alors on envoit le mail avec un corps de texte et objet a définir a cette personne

    Remarque :
    En effet j'ai oublié de préciser que lenvoi de mail se fait avec Outlook

    Voila en pièce jointe un exemple de fichier Excel

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le code complet pour réaliser ce que tu souhaites faire:
    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
    Option Explicit
     
    'Envoi du mail
    Public Sub EnvoiMail()
     
      Dim myOlApp As New Outlook.Application
      Dim myOlIte As MailItem
     
      Set myOlApp = New Outlook.Application
      Set myOlIte = myOlApp.CreateItem(olMailItem)
     
      With myOlIte
        .To = ListeMailEnvoi
        .Subject = "Objet du mail"
        .Body = "Corps du texte"
        '.Attachments.Add ""
        .Send 'Envoi
      End With
     
    End Sub
     
    'Création de la liste d'envoi
    Public Function ListeMailEnvoi() As String
     
      Dim strPrenom As String, strNom As String, strAdresse As String
      Dim tabMail() As Variant
      Dim tabEnvoi As Collection
      Dim strEnvoi As String
      Dim lngLigne As Long
      Dim rngC As Range
      Dim i As Integer
     
      With Worksheets("Feuil1")
     
        Set tabEnvoi = New Collection
     
        'Liste des adresses mail
        tabMail = Array("eric.martab@hotmail.fr", "christian.gillou@hotmail.fr")
     
        lngLigne = .Range("J" & .Rows.Count).End(xlUp).Row
     
        For Each rngC In .Range(.[J1], .Cells(lngLigne, 10))
          If rngC.Value <> "" Then
            strPrenom = LCase(Split(rngC.Value, " ")(0))
            strNom = LCase(Split(rngC.Value, " ")(1))
            strAdresse = strPrenom & "." & strNom & "@hotmail.fr"
            If IsInArray(strAdresse, tabMail) = True Then
              On Error Resume Next
                tabEnvoi.Add strAdresse, strAdresse
              On Error GoTo 0
            End If
          End If
        Next rngC
     
      End With
     
      'Création de la liste d'envoi
      For i = 1 To tabEnvoi.Count
        ListeMailEnvoi = ListeMailEnvoi & tabEnvoi.Item(i) & "; "
      Next i
     
    End Function
     
    'Fonction renvoyant "TRUE" si l'élement appartient au tableau passé en paramètre
    Public Function IsInArray(FindValue As Variant, arrSearch As Variant) As Boolean
        If Not IsArray(arrSearch) Then Exit Function
        IsInArray = InStr(1, vbNullChar & Join(arrSearch, _
         vbNullChar) & vbNullChar, vbNullChar & FindValue & _
         vbNullChar) > 0
    End Function
    Il est nécessaire d'activer la référence Microsoft Outlook XX.X Object Library ou sinon de tout coder en 'late binding'.
    Dernière modification par Invité ; 01/08/2013 à 19h30.

  3. #3
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 215
    Points : 523
    Points
    523
    Par défaut
    Si çà peut t'aider vas voir ici, çà va certainement te convenir.

    A+

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Bonjour à tous

    Graphikris merci pour ton lien il très est intréssant je vais le voir

    Vcottineau
    Merci de s'intresser à mon probleme..je viens de tester ta macro elle fonctionne a merveille elle fait excetement ce que j'ai demandé merci beacoup

    Ce qui reste à faire :
    Dans le fichier Excel ça se peu que les noms et pernoms de ces trois personnes se repète plusieurs fois car ils sont résponsables sur beaucoup de projets.

    Ce que je veux faire : c'est d'envoyer un seul mail récapulatif à chaque de ces trois personnes en mettant dans le corp du message une phrase + les noms de tous les pojets sur lesquels ils sont reponsables

    Les noms des projets de chaque personne sont sur la meme ligne que leurs nom et prénom exactement dans la colonne A colorés en Vert)

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans le code j'utilise une collection qui permet justement d'enlever les doublons...

    Pour ce que tu souhaites faire tu peux utiliser un module de classe qui reprend les données propres à chaque personne.

    J'ai pas le temps de m'en occuper maintenant mais tu peux déjà commencer.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Bonjour vcottineau

    Merci pour ta réponse...enfaite avant je faisais un test que sur trois personnes de nom différents donc j'ai pas remarqué que tu as tenu compte du cas ou y aura une plusieurs fois le nom d'une même personne

    Donc mon 1er Pb est résolu..MAIS la macro ne prend pas en compte dans le cas ou ya autre chose que le nom et prénom dans la colonne J, j'ai fait le test et la macro beug

    En plus si ya un nom avec accent le mail n est pas envoyer a cette personne sachant que dans une adresse mail ya pas d'accent

    Merci encore une fois

  7. #7
    Invité
    Invité(e)
    Par défaut
    Voila déjà deux méthodes pour enlever les accents dans une chaine de caractère. Utiliser l'API Windows est plus efficace.
    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
    Option Explicit
     
    Private Declare Function FoldString Lib "kernel32" Alias "FoldStringA" (ByVal dwMapFlags As Byte, ByVal lpSrcStr As Long, ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchdest As Long) As Long
     
    Public Sub Test()
      Debug.Print (EnleverAccents("ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"))
      Debug.Print (EnleverAccents("0ZnÁrÄPË43ÑertÔÙdwxÛâçérðpõûÿ"))
      Debug.Print (EnleverAccentsBis("ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"))
      Debug.Print (EnleverAccentsBis("0ZnÁrÄPË43ÑertÔÙdwxÛâçérðpõûÿ"))
    End Sub
     
    Function EnleverAccentsBis(Chaine As String) As String
     
     Dim intTemp As Integer
     
     EnleverAccentsBis = Space(Len(Chaine))
     
     For intTemp = 0 To Len(Chaine) * 2 - 2 Step 2
      FoldString &H40, StrPtr(Chaine) + intTemp, 1, StrPtr(EnleverAccentsBis) + intTemp, 1
     Next intTemp
     
    End Function
     
    Public Function EnleverAccents(ByVal Chaine) As String
     
      Dim strAvecAccent As String, strSansAccent As String
      Dim intTemp As Integer, strTemp As String
     
      strAvecAccent = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
      strSansAccent = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
     
      Chaine = Replace(Replace(Replace(Replace(Chaine, "oe", "oe"), "OE", "OE"), "æ", "ae"), "Æ", "AE")
     
      For intTemp = 1 To Len(Chaine)
        strTemp = InStr(1, strAvecAccent, Mid(Chaine, intTemp, 1), 0)
        If strTemp Then Mid(Chaine, intTemp, 1) = Mid(strSansAccent, strTemp, 1)
      Next intTemp
     
      EnleverAccents = Chaine
     
    End Function
    En PJ le fichier permettant de supprimer les accents et d'éviter les erreur lorsque qu'il y a autre chose que le nom et le prénom dans la cellule.

    Pour le reste je vais regarder dans la journée.

    Ce que je veux faire : c'est d'envoyer un seul mail récapulatif à chaque de ces trois personnes en mettant dans le corp du message une phrase + les noms de tous les pojets sur lesquels ils sont reponsables
    Tu veux un seul mail pour l'ensemble des personnes avec le détail de chaque personnes dans le corps du mail et pas un mail par personne avec les projets associés?
    Dernière modification par AlainTech ; 10/08/2013 à 16h33. Motif: Fusion de 3 messages

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Bonjour vcottineau,

    Encore une fois un grand merci à toi d'avoir consacrer du temps pour m'aider...Respect à toi

    En effet ce que je veux c'est envoyer un mail par personne avec les projets associés

    Merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    En PJ l'amélioration du code avec utilisation d'un module de classe. Un mail est envoyé à toutes les personnes avec le détail des projets associés.

    Si tu veux envoyer un mail par personne tu dois pourvoir te débrouiller par toi-même puisque c'est plus simple.
    Dernière modification par Invité ; 08/08/2013 à 11h14.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Re vcottineau,

    Ta macro fonctionne très bien...il me reste juste à envoyer un mail individuel par personne avec ces propres projets

    Encore une fois un enorme merci pour toi

    Si en meme temps quelqu'un dautre peux m'aider sur cela je serai très reconnaissant car je suis débutant

    En attendant je vais essayer de le faire par moi meme !

  11. #11
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas testé mais ça devrait fonctionner (en PJ).
    Dernière modification par Invité ; 08/08/2013 à 14h05.

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 164
    Points : 88
    Points
    88
    Par défaut
    Re,

    Ta macro est merveilleuse...elle fait excetement ce que je voulais

    Je mets un grand !!!

    Vraiment sans toi je serai pas arriver ... tu m'as surtout sauvé la vie




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

Discussions similaires

  1. [XL-2010] Envoi de mail à partir d'excel
    Par snico78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2014, 14h29
  2. Envoi de mail à partir d'excel
    Par winnie280590 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/02/2014, 01h04
  3. Envoie mail à partir d'excel à adresse mail d'une cellule
    Par Cordonny dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2013, 12h10
  4. Réponses: 2
    Dernier message: 12/10/2011, 20h40
  5. Envoi mail à partir d'Excel (pb de fonctionnement)
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2007, 15h46

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