VBA envoi mail via outlook

Résolu/Fermé
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 - 16 oct. 2015 à 09:29
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 - 17 oct. 2015 à 00:40
Bonjour,
Est-ce que quelqu'un peut m'aider, voila mon problème, j'ai créé un bouton sur une feuille excel (nommée "FC" qui me permet d'envoyer par message électronique des infos sur cette feuille...
Je propose la possibilité d'envoyer ce message (via une boite msgbox) en copie, ou pas et à la fin de la procédure, après l'envoie du message, je souhaite revenir sur une une autre feuille nommée "Janvier"

Le problème c'est que le condition est bien respecter si le choix est "NON", mais quand on clic sur "OUI", le feuille "Janvier" est réactivée avant l'envoi du message... c'est ça mon souci, le sheets("Janvier").activate est à mon avis mal placé... je ne trouve pas la solution. voici le code :

[Sub Bouton9_Clic()
If MsgBox("Y-a-t-il des Agents en copie ?", vbYesNo, "Message en copie") = vbYes Then
ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "Acceuil de la Maison de l'Autonomie"
.Item.To = Range("A42")
.Item.Display
End With
Else
ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "Acceuil de la Maison de l'Autonomie"
.Item.To = Range("A42")
.Item.CC = " "
.Item.Send
End With
Sheets("Janvier").Activate
End If
End Sub]


Merci d'avance...
Joss

4 réponses

diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
16 oct. 2015 à 09:50
Bonjour,

Dans le cas ou tu clique sur oui , ton mail n'est pas envoyé.
Ta méthode .Send est dans ton Else.
Essaie de rajouter un .Send avant ton premier "End With" ceci:

If (// ton msgbox )
   With ActiveSheet.MailEnvelope 
      .Introduction = "Acceuil de la Maison de l'Autonomie" 
      .Item.To = Range("A42") 
      .Item.Display
      .Item.Send 
   End With 
Else 
   ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer 
   ActiveWorkbook.EnvelopeVisible = True 

   With ActiveSheet.MailEnvelope 
      .Introduction = "Acceuil de la Maison de l'Autonomie" 
      .Item.To = Range("A42") 
      .Item.CC = " " 
      .Item.Send 
   End With  
End If 
Sheets("Janvier").Activate 
End Sub

Et comme tu peux voir , essais aussi en activant Ta feuille "Janvier" à la toute fin de ta procédure.

Tiens moi au courant.
3
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
16 oct. 2015 à 10:27
J'avais essayé exactement comme ça, le .dend après le .display et l'activavation de la feuille après le end if, le problème c'est que si le condition est "Yes", il reste en fin de procédure sur le feuille en cours (donc "FC") et ne revient pas sur "Janvier"
donc c'est presque ça !
0
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
16 oct. 2015 à 10:27
.send pardon.....
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
16 oct. 2015 à 10:35
Quand vous appuyez sur "non" dans votre msgbox le mail s'envois bien ?
Si oui , essayer d'enlever le display dans le cas Yes, le mail s'enverra automatiquement normalement
1
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
16 oct. 2015 à 12:18
Chose faite, toujours pareil... si "non" il envoie bien le mail automatiquement et revient comme prévu sur la feuille "janvier" si "oui", il me laisse compléter le CC: (donc tout va bien), j'envoie, par contre il reste sur le feuille "FC" en cours... et ne reviens pas sur "Janvier"
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
16 oct. 2015 à 13:43
Cela te dérangerais de mettre un input plutôt que d'ouvrir Outlook Afin de compléter les CC?

exemple:
if(yes)
mailAgent= inputBox("Saisissez les Mail des agents a mettre en copie(Séparé par des Point virgule):)


Puis rajouter dans ta création d'email
.Item.CC=mailAgent

Et envoyer ton mail Via le .Send ( Sans utiliser le Display)
1
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
16 oct. 2015 à 13:55
Ca me parait pas mal !!! j'essaie et te tiens au courant !!!
0
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
16 oct. 2015 à 17:45
Je dois faire des erreurs dans le code... toujours pareil... je te le remets avec tes propositions...



Sub Bouton9_Clic()
If MsgBox("Y-a-t-il des Agents en copie ?", vbYesNo, "Message en copie") = vbYes Then
Mailagent = InputBox("Saisissez les Mail des agents a mettre en copie(Séparé par des Point virgule")

ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "Acceuil de la Maison de l'Autonomie"
.Item.to = Range("A42")
.Item.CC = Mailagent
.Item.send
End With
Else
ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "Acceuil de la Maison de l'Autonomie"
.Item.to = Range("A42")
.Item.CC = " "
.Item.send
End With
Sheets("Janvier").Activate
End If
End Sub
0
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
17 oct. 2015 à 00:40
et au lieu d'une imputbox, peut-on mettre une listbox pour faire choisir des agents dans une liste ??? dans ce cas là, comment je dois m'y prendre ?
0