Ce que je souhaite : via une macro, envoyer message et plusieurs PJ.
Plusieurs essais faits --> tout fonctionne
Mais je souhaite arrêter la procédure si pb avec la PJ 1, ou 2 ou 3 etc
J'ai écrit :
If Sh.Range("f" & i).Value = "" Then GoTo pointsuite1
On Error GoTo pb1
.attachments.Add PJ1
pb1: MsgBox "pb avec PJ1"
pointsuite1:
If Sh.Range("g" & i).Value = "" Then GoTo pointsuite2
On Error GoTo pb2
.attachments.Add PJ2
pb2: MsgBox "pb avec PJ2"
pointsuite2:
or, même s'il n'y a pas d'erreur (par exemple la pièce jointe1 est trouvée et rattachée au mail..... le système va tout même à la balise pb1 et génère donc le message
je dois mal gérer le "on error"...mais je ne trouve pas le bon positionnement
si vous avez des idées, je suis preneur
le petit pb qui reste :
- la macro passe l'individu 1, tout est ok, mail affiché
- la macro passe l'individu 2, tout est ok, mail affiché
- la macro passe l'individu 3 , ...problème, message, ...mail pour l'individu 3 supprimé, sortie de la procédure
Existe-t-il un bout de code qui permettrait de supprimer TOUS les mails qui sont prêts (dans l'exemple ci dessus je souhaiterai que la macro ferme aussi les mails destinés aux individus 1 et 2.
oui, je pensais avoir répondu dans ce que je décrivais en #27, mais je ne suis peut-être pas trés clair . Dis le moi dans ce cas
et puis quand je bosse sur un fichier comme çà.. j'ai des idées qui arrivent (et des des gestions de problèmes) au fur et à mesure que je construis...d'où ma question du jour
et puis quand je bosse sur un fichier comme çà.. j'ai des idées qui arrivent (et des des gestions de problèmes) au fur et à mesure que je construis...d'où ma question du jour
Pour moi il faut, soit un compte rendu de ce qui a été envoyé (comme on a fait dans un autre fil de discussion récemment), soit un compte rendu préalable et la possibilité d'envoyer ou non les mails.
AAAhhh..j'ai encore un dernier bout de code que je ne connais pas....
A la fin du processus décrit tout à l'heure, le système reste bloqué sur les mails crées (en attente de cliquer sur envoyer par l'utilisateur après vérif, car l'utilisateur, méfiant, veut vérifier )
Or je souhaite diffusé un message lorsque tous les mails ont été générés, message qui dit que le boulot est fait
mais....même en tentant d'activer mon classeur, en tentant de sélectionner un onglet...rien n'y fait, il reste sur outlook et ne veut pas revenir sur Excel (sauf bien sûr à prendre la souris et à cliquer dans le fichier et le message de fin s'affiche.....encore faut-il savoir que le boulot est fini)
j'ai tenté d'aller voir sur le Net..je ne trouve rien
Sauf parfois où il est question de module de classe....et là....j'y comprends plus rien
donc si un de vous à le truc qui permet de faire cette passerelle entre Outlook et excel, je sui preneur
ci dessous le bout de code utilisé pour construire les mails.
et donc après next k, j'ai tenté des trucs...mais donc...pas opérationnels.....du tout
Merci d'avance !!
A+
VB:
With oMail
.Display
Set oObjetWord = .GetInspector.WordEditor
.To = SHO.Range("w" & k).Value
If SHO.Range("f" & k).Value = "" Then GoTo pointsuite1
If Dir(PJ1) = "" Then
MsgBox "pb avec PJ1 concernant " & SHO.Range("aF" & k) & ", " & SHO.Range("p" & k) & Err.Description
oMail.Delete
SHte.Range("a" & LTE).Value = "publipostage_OF_CFP"
SHte.Range("b" & LTE).Value = SHe.Range("p" & k)
SHte.Range("c" & LTE).Value = SHe.Range("af" & k)
SHte.Range("d" & LTE).Value = SHe.Range("f1")
SHte.Range("e" & LTE).Value = SHe.Range("f" & k)
GoTo SUIVANT
Else
.attachments.Add PJ1
End If
pointsuite1:
.Subject = SHO.Range("d" & k).Value
Set oObjetWord = .GetInspector.WordEditor
SHMO.Range("A8:a22").Copy
oObjetWord.Range(0).Paste
'Send si on veut envoyer
Dim dtAujourdhui As String
dtAujourdhui = Format(Date, "dd mmmm yyyy")
SHO.Range("N" & k).Value = "Envoyé le " & dtAujourdhui
SHO.Range("m" & k).Value = "NON"
SUIVANT:
End With
End If
Set oMail = Nothing: Set oOutlook = Nothing
Next k
ThisWorkbook.Activate
SHO.Select
MsgBox "Messages prêts à partir. "
Pour moi il faut, soit un compte rendu de ce qui a été envoyé (comme on a fait dans un autre fil de discussion récemment), soit un compte rendu préalable et la possibilité d'envoyer ou non les mails.
Le plus simple est que je fasse une description de ce que fait la macro
Mais avant un petit mot de contexte
Le fichier est « nourri » par une extraction .xls d’un logiciel pro
Chaque ligne est un individu avec un certains nombre de données
Par exemple (et simplement) il y a son nom et prénom dans une cellule
Cette extraction est copié-collé dans le fichier, dans l’onglet publipostage, à partir de la colonne AA
Les colonnes précédentes servent à reprendre ou créer des données nécessaires pour faire tourner la macro – par exemple l’adresse mail de l’individu (qui est juste reprise de l’extraction)
L’intitulé des pièces jointes (qui se trouvent à partir de la colonne F) est construite toujours de la même façon (par exemple nom_prenom_recette_tarte.pdf
Tous les individus auront les mêmes pièces jointes, mais qui sont personnalisées dans leur intitulé et une partie u contenu de la pièces jointe
et à partir de la colonne F se trouve non seulement l’intitulé de la pièce jointe et son chemin. La structure du chemin est toujours la même et varie juste en fonction de l’individu
aussi, l’utilisateur aura pris soin de
construire son intitulé de la même manière que se qui est réclamé par la macro
aura mis les pièces jointes dans un dossier crée au nom de l’individu
ainsi, reconstruire un chemin par formule devient assez simple (concatener)
enfin il existe un autre onglet avec la trame du corps de mai , aussi personnalisable en fonction de chaque individu
La macro
à partir de la première ligne de données jusqu’à la dernière
on définit les toutes les variables (dernière ligne, pièce jointe, onglet, etc)
dans l’onglet mail on personnalise le mail dans une ou deux cellules
on ouvre un mail
les destinataires et l’objet du mail sont issues des données présentes dans l’onglet publipostage
on va chercher les PJ de l’individu
si pas de pb
tous les mails se construisent avec le corps du mail issu de l’onglet évoqué tout à l'heure.
Les mails s’affichent
La date de l’envoi du mail est alors indiqué dans le tableau dans l’onglet publipostage
L’utilisateur vérifie, peut rajouter des choses s’il le souhaite
Et il clique sur envoyer
Si pb de pièce jointe (parce que le nom crée lors de la création ne correspond pas exactement a ce qui été défini comme règle d’écriture de l’intitule – ou chemin erroné)
Un message s’affiche informant l’utilisateur d’un pb pour tel ou tel individu et pièce jointe
Indique dans un onglet « table erreur »
Le nom de l’onglet où la macro a été cherche la pièce jointe (il existe plusieurs onglet de publipostage pour des situations différentes
Le nom de la personne
Le numéro de ligne qui ne va pas
La PJ qui déconne
Efface le mail qui était en cours de construction
Et la macro continue pour les autres individus selon les descriptif précédent (si pas de pb)
Et donc quand tout est passé un message pour l’utilisateur qui lui indique que le boulot est terminé et qui s’il y a eu des messages d’erreur il faut aller voir l’onglet table erreur
L’utilisateur doit repérer et réparer les erreurs
Il relance la macro qui ne prendra en compte que les individus qui n’ont pas eu le mail envoyé (colonne M, « a envoyer : soit rien et le système doit envoyer, soit NON et le système doit passer à la ligne suivante)