Problème macro envoi mail

mariea - 27 août 2012 à 18:56
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 août 2012 à 21:13
Bonsoir,

Certains vont me répondre que plusieurs "tuto" ont été créés sur ce sujet, mais je n'arrive pas à trouver et mes connaissances ne sont pas assez bonnes pour tout comprendre. Je m'explique, j'ai une macro pour envoyer un fichier excel par mail, la macro a déjà été plusieurs fois corrigée par plusieurs d'entre vous (merci encore)mais à chaque fois j'ai un message d'erreur: " erreur d’exécution'1004', la liste des destinataires contient un nom de destinataire inconnu. Utilisez un nom valide et réessayez".

voici la macro :
Sub EnvoiMail()
Dim A As String
Dim Sep As String
Sep = " ; "
If Sheets("Feuil1").Range("C52") = "OUI" Then
If Range("G46") <> "" Then A = A & Range("G46") & Sep
If Range("G47") <> "" Then A = A & Range("G47") & Sep
If Range("G48") <> "" Then A = A & Range("G48") & Sep
If Range("B46") <> "" Then A = A & Range("B46")
MsgBox A
Workbooks("Bon de commande prestation annexe.xls").SendMail Recipients:=A, Subject:="Test envoi classeur"
Else
MsgBox "Formulaire incomplet. Envoi annulé"
End If
End Sub

merci d'avance

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 août 2012 à 19:41
Salut

Que vaut ta variable A au moment de la commande.
Bien sûr, ne la recopie pas ici, sinon on y verra tes adresses mails, mais vérifie que les orthographes sont correctes et qu'aucun caractère parasite n'est venu se glisser dans la chaine.

Essaye de supprimer les espaces devant et derrière le ; séparateur.
Essaye la virgule comme séparateur.

Dans quel classeur se trouve cette macro ?
Est-ce "Bon de commande prestation annexe.xls" ?
Si oui, je n'en ai pas l'expérience, mais peut-on (a t-on le droit) d'expédier le classeur qui contient la macro ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Salut Jack,

les orthographes sont correctes, et pour répondre à ta question, oui on peut expédier le classeur qui contient la macro, ce sera un formulaire de demande enregistré en modèle, toutes les cellules qui ne seront pas à remplir seront verrouillées, ainsi que la feuille qui ne concerne que moi, je peut mettre le fichier en pièce jointe si on m'explique comment faire.
Par contre quand tu parle de variable A, pour moi tu parle java(nais).

merci
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 août 2012 à 21:04
Dim A As String
'A' est une variable
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 août 2012 à 21:13
D'après l'aide de la fonction SendMail (touche F1
), si plusieurs destinatiares, il faut mettre ceux-ci dans un tableau, pas dans une chaine séparée par des ;
Mais tu n'as pas travaillé pour rien, grâce à Split, une nouvelle ligne et un changement de variable devrait suffire :
Dim aDesti() As String
... ton programme, et
aDesti = Split(A, Sep)
Workbooks("Bon de commande prestation annexe.xls").SendMail _
    Recipients:=aDesti, _
    Subject:="Test envoi classeur" 
Tu auras noté que ce qui suit Recipients a changé.
Recipients:=aDesti
ou
Recipients:=aDesti()
à tester

C'est écrit dans l'aide et surement dans des exemples de code en panne dans les questions de ce forum, c'est une fonction qui revient souvent dans le forum.
0
Rejoignez-nous