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 excel/outlook : diviser en plusieurs mails quand trop d'adresses


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Envoi de mail excel/outlook : diviser en plusieurs mails quand trop d'adresses
    Bonjour

    Largement satisfait du coup de pouce apporté la dernière fois, je m'en remets une nouvelle fois à vous

    Grâce à Pierre Fauconnier, j'ai donc réussi à modifier le code VBA, expliqué ici, pour n'envoyer des mails à une liste d'adresses QUE si ceux ci était visibles dans le document excel.

    Mais voilà, j'ai un petit problème, que j'avais déjà remarqué avant, qui s'est plus ou moins résolu en ne prennant en compte que les adresses visibles, mais qui va potentiellement se reproduire.
    Je remets ici le code utilisé :
    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
    Private Sub CommandButton1_Click()
    'compteur de ligne
    i = 3
     
    'les adresses a prendre en consideration
     
    bcc_a_prendre = ""
     
     
     
    Do
    If Rows(i).Hidden = False Then bcc_a_prendre = bcc_a_prendre & Range("F" & i).Value & ";"
    i = i + 1
    Loop Until Range("D" & i).Value = ""
     
     
     
     
     
    'comme il y a un ; en trop dans chaque champ, l'enlever mais verifier que le champs n'est pas vide
     
    If Len(bcc_a_prendre) > 0 Then
    bcc_a_prendre = Left(bcc_a_prendre, Len(bcc_a_prendre) - 1)
    End If
     
    'preparation du mail
    Hyperlien = "mailto:" & "?"
    Hyperlien = Hyperlien & "subject="
     
    Hyperlien = Hyperlien & "&Bcc=" & bcc_a_prendre
     
     
    ActiveWorkbook.FollowHyperlink Hyperlien
     
     
     
    End Sub
    Le but est donc, à partir d'un tableau excel avec des adresses mail, de faire un mail groupé pour toutes ces adresses dans outlook, avec les adresses dans le champ Bcc.

    Mais voilà, quand j'ai une liste trop grande d'adresses mail à prendre en concidération, j'ai un rapport de bug au moment où je clique sur le bouton. Le fait de ne prendre que les lignes sélectionnées a donc reporté le problème à plus tard, mais j'ai l'impression que le nombre de caractères dans le lien "mailto:blablabla" est limité.

    Je me demandais donc s'il était possible de modifier ce code pour dire, par exemple, que si le nombre de caractères est plus grand que X, ou que le nombre de cases (où sont inscrites les adresses mails) est suppérieur à X, alors faire la même chose mais en plusieurs mail. (par exemple, arrivé à 50 adresses mails/cases/lignes du tableau excel, continuer dans un second mail, etc.)


    Par acquis de conscience, j'explique quand même le bug, au cas où je le comprendrais mal :
    Quand je prends toute la liste des adresses, j'ai un message d'erreur "Run-time error '-2147221020 (800401e4)': The adresses of this site is not valid. Check the adresses and try again." ; et quand je cliques sur "debug", il surligne dans le code la ligne "ActiveWorkbook.FollowHyperlink Hyperlien".


    Un tout grand merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Je me permet de réactiver un peu, just in case

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé la solution de mon côté, donc je partage

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do
    If Rows(i).Hidden = False Then bcc_a_prendre = bcc_a_prendre & Range("F" & i).Value & ";"
    i = i + 1
    Loop Until Range("D" & i).Value = ""
    J'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    m = 0
     
    Do
    If Rows(i).Hidden = False Then bcc_a_prendre = bcc_a_prendre & Range("F" & i).Value & ";"
    i = i + 1
    If Rows(i).Hidden = False Then m = m + 1
    Loop Until Range("D" & i).Value = "" Or m = 40
    Ce qui me permet avec m de compter le nombre d'adresses prises en compte réellement pour le mail, et donc de stopper à 40 adresses et de passer au mail suivant, sans remettre à zéro i ou m.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2009, 22h40
  2. envoi invitation de excel à outlook
    Par faamugol dans le forum Excel
    Réponses: 3
    Dernier message: 19/02/2008, 18h43
  3. Réponses: 1
    Dernier message: 12/12/2007, 23h54
  4. [Excel/Outlook] envoi de mails
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 27/02/2007, 11h10

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