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 :

Nombre maximum d'adresses mails avec CDO dans .TO


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut Nombre maximum d'adresses mails avec CDO dans .TO
    Bonjour,

    J’utilise CDO pour envoyer des mails, ceci fonctionne très bien en test avec trois mails dans le champ .TO,
    Je peux avoir jusqu’a 60 mails,
    J’aimerai savoir le maximum de mails que je peux mettre dans ce champ .TO ?
    Serai-je limité par la taille de la chaine que je passe en paramètre ?

    Merci de vos réponses ou conseils,

    Henri

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, la meilleure façon c'est d'essayer. Sinon qqch comme ceci :

    Je précise que je n'utilise pas OutLook mais OutLook Express sur lequel cela fonctionne sans problèmes.
    En partant d'une feuille ShDatas avec en colonne A B C D
    Destinataire Sujet Message Pièce Jointe

    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
    Option Explicit
     
    Const sFrom As String = "xxxxx@yyyyy.fr"
     
    Private Sub EnvoiFichier()
    Dim CdoMessage As Object, LastRow As Long
    Dim Fichier As String, r As Long
     
        LastRow = ShDatas.Range("A" & Rows.Count).End(xlUp).Row
        For r = 2 To LastRow
            Set CdoMessage = CreateObject("CDO.Message")
            With CdoMessage
                .Subject = ShDatas.Range("B" & r)
                .From = sFrom
                .To = ShDatas.Range("A" & r)
                .TextBody = ShDatas.Range("C" & r)
                If Len(ShDatas.Range("D" & r)) > 0 Then
                    .AddAttachment ShDatas.Range("D" & r)
                End If            
                .Send
            End With
            Set CdoMessage = Nothing
            Application.StatusBar = r - 1 & " / " & LastRow - 1
        Next r
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    S'il existe une barrière du style 255 caractères il te faudra scinder tes envois


    Je suis effectivement ennuyé par la longueur de la chaine à 256 chars (je ne l’ai pas encore vérifié)
    Et comment faire pour scinder cette envoie ?
    On relance une deuxièmes fois la fonction qui envoie les mails par exemple ?
    Que puis-je mettre d’autre qu’une chaine dans le champ <<.To>> (un tableau par exemple !)

    Merci de vos réponses,

    Cordialement,

    Henri

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, [F5] pour rafraichir le post

  5. #5
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,

    Perso je fais une boucle sur les destinataires et un envoi à chaque adresse, c'est certe un peu plus long en exécution mais ça éviter que tous les destinataires voient l'adresse des autres (sans utiliser Bcc) et ça résoud le problème éventuel de nombre ou de chaine de caractère trop important (même si ce n'était pas le but initial, en fait j'adapte le texte en fonction du destinataire)

    A+

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Bon ! , c’est un peu la m . . . . ,
    J’ai 85 adresse mails à expédier et au-delà 52 j’ai mon message d’erreur -2147220977
    << La classe d’évènement de cette abonnement est dans une partition non valide >>

    Donc je vais devoir le faire en plusieurs passes,

    Sinon j’ai trouvé sur Google une histoire de SENDING
    C’est quoi le SENDING(dans CDO) que je devrai mettre à 1 pour ne plus avoir cette erreur justement

    Merci de vos conseils,

    Henri

  7. #7
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, avec l'exemple fourni j'en ai envoyé plus de 100 sans problèmes, à toi de l'adapter à ton contexte.

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    J'imagine que tu dépasse pas 52 en concaténant les adresses, donc si ça peux t'aider voici le dernier code avec CDO que j'ai utilisé (un peu modifié), comme je l'ai expliqué, je fais un envoi par adresse car j'adapte le texte en fonction du destinataire, à toi d'adapter à ton cas.

    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
    Option Explicit
     
    Sub MailingStepIn()
    '--------------------------------------------------------------------------------------
    ' Procedure : Envoi Mail Avec CDO2000; vérifier si référencé
    ' Author    : Fred Vandermeulen
    ' Date      : 12/09/2012
    ' Purpose   : Envoi un mail sans message de sécurité (validation)
    ' Method:   : Déclaration tardive ("Late Binding")
    ' Microsoft CDO for Windows 2000 Library
    '---------------------------------------------------------------------------------------
    Dim CdoMsg As Object
    Dim WsS As Worksheet
    Dim DerLig As Long, R As Long
    Dim MyTo As String
     
    Set WsS = Sheets("Mailing")
    DerLig = WsS.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'récupère le numéro de la dernière ligne remplie sur base de la colonne A
    DerLigText = WsS.Cells(Columns(4).Cells.Count, 4).End(xlUp).Row 'récupère le nombre de ligne pour le corps du mail
     
    For R = 2 To DerLig 'Boucle sur chaque ligne depuis la 2ème jusqu'à la dernière (via la variable BerLig)
    Set CdoMsg = CreateObject("CDO.Message")
    Set CdoMsg.Configuration = GetSMTPServerConfig()
     
        'Dans mon fichier, mes adresses mail et URL sont entourées de [] pour éviter les hyperliens
        MyTo = Replace(WsS.Cells(R, 1).Value, "[", "")
        MyTo = Replace(MyTo, "]", "")
     
        With CdoMsg
            .To = MyTo
            .From = "TonAdresse@email"
            .Subject = "Ton sujet"
            .htmlBody = "Le corps de ton e-mail"
            .Send
        End With
    Set CdoMsg = Nothing
    Next R
     
    MsgBox "Traitement terminé", vbInformation, "Excel-Et-Vous"
     
    End Sub
     
    Function GetSMTPServerConfig() As Object
    ' Microsoft CDO for Windows 2000 Library
        Const cdoSendUsingPickup = 1
        Const cdoSendUsingPort = 2
        Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
        Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
        Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
     
        Dim Cdo_Config As Object 'New CDO.Configuration
        Set Cdo_Config = CreateObject("CDO.Configuration")
        Dim Cdo_Fields As Object
        Set Cdo_Fields = Cdo_Config.Fields
     
        With Cdo_Fields
            .Item(cdoSendUsingMethod) = cdoSendUsingPort
            .Item(cdoSMTPServer) = "AdresseSMTP" 'Adapter l'adresse SMTP
            .Item(cdoSMTPServerPort) = 25
            .Update
        End With
     
        Set GetSMTPServerConfig = Cdo_Config
        Set Cdo_Config = Nothing
        Set Cdo_Fields = Nothing
     
    End Function

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    En fait, j’évite de passer par des lectures de feuilles, je préfère de loin ouvrir la feuille une seul fois et stoker dans des tableaux, mais ceci ne changera pas trop,
    Je vais utiliser le code de KIKI29,

    Y a-t-il un moyen de savoir si le mail est vraiment parti avec CDO ?
    Y a-t-il un moyen d’avoir les retours d’info, à la mode call-back en sorte, les plus généraux sur CDO ?

    Merci à tous (surtout KIKI29) et bonne journée

    Henri

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

Discussions similaires

  1. [MySQL] Adresse mail avec caractère souligné dans la fonction mail
    Par pchartier dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/11/2011, 18h35
  2. Longueur des mail avec cdo.messages
    Par roro06 dans le forum ASP
    Réponses: 4
    Dernier message: 05/05/2008, 11h57
  3. Réception/Traitement de mail avec CDO
    Par Tskoey dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2008, 11h01
  4. Envoi de mail avec CDO
    Par elric47 dans le forum VBScript
    Réponses: 0
    Dernier message: 19/03/2008, 16h57
  5. Ouvrir nouveau mail avec tableau dans Lotus Notes
    Par z980x dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 09/08/2007, 14h25

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