VBA ne fonctionne pas sur tout les PC
Bonjour à tous,
Tout d'abord merci pour la qualité de vos sujets qui m'ont permis en cherchant de créer un fichier qui répond bien à mes besoins.
Aujourd'hui je suis coincé et ne trouve aucunes solutions à mon problème.
Pour faire simple j'ai créé un fichier avec une macro qui permet l'envoi d'un mail via Outlook, dont l'adresse du destinataire est contenu dans une cellule de ce même fichier. Tout fonctionne parfaitement sur les postes de travail Windows xp, vista avec excel 2010 et outlook 2010. En revanche le récent poste de travail principal lui est sous windows 10 avec excel 2016 à priori et la ça coince. c'est finalement les seules différences que je remarque.
J'ai vérifié l'activation des références bibliothèques Microsoft Outlook et Excel. (ce ne sont pas les mêmes versions sur chaque PC mais elles semblent activés).
Lorsque je clique pour envoyer le mail, un message d'erreur apparait:
La méthode "To" de l'objet "_MailItem" à échoué
en cliquant sur déboguer je suis renvoyé directement à la ligne MonMessage.To= [C23]
Je vous met en dessous le code VBA que j'utilise, en espérant obtenir quelques pistes.
Bien à vous.
Sub Bouton10_Clic()
If MsgBox("En cliquant sur oui, le mail d'option partira.", vbYesNo, "Confirmation de l'envoi") = vbYes Then 'condition : si oui au message
Dim MonOutlook As Object
Dim MonMessage As Object
Dim corps As String
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
MonMessage.To = [C23]
MonMessage.Subject = "Option de réservation"
corps = corps & "Bonjour Mme, Mr, " & [C11] & Chr(13) & Chr(11)
corps = corps & Chr(13) & Chr(10)
corps = corps & "Veuillez trouver ci-dessous le récapitulatif de votre pré-réservation," & Chr(13) & Chr(10)
corps = corps & "Vous avez posé une option de réservation pour le " & [C2] & Chr(13) & Chr(10)
corps = corps & " " & [Q11] & Chr(13) & Chr(10)
corps = corps & ": " & [R11] & Chr(13) & Chr(10)
corps = corps & " " & [AB11] & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & "" & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & ""
corps = corps & Chr(13) & Chr(10)
corps = corps & ""
corps = corps & Chr(13)
corps = corps & ""
corps = corps & Chr(13)
corps = corps & "" & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & "" & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & " " & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & " " & Chr(13) & Chr(10)
corps = corps & Chr(13) & Chr(10)
corps = corps & "A bientôt" & Chr(13) & Chr(10)
corps = corps & ""
MonMessage.body = corps
MonMessage.send
Set MonOutlook = Nothing
End If
End Sub
Bonjour,
On n'utilise plus la méthode Evaluate (Implicite avec les crochets) il est préférable d'utiliser Range() et surtout, pour éviter toute ambiguïté, il est fortement conseiller de préciser la propriété visée comme ici "Value" donc, testes de cette façon :
MonMessage.To = Range("C23").ValueBonjour,
vérifier que Outlook est bien installé sur le poste ayant windows 10 avec excel 2016
si oui,
- décocher la référence à la bibliothèque Microsoft Outlook,
- enregistrer le fichier
- remettre la référence à la bibliothèque Microsoft Outlook version "selon celle qui est installé"
Bonsoir,
Merci pour votre réactivité.
Je me suis arrêté à la solution proposé par Theze qui fonctionne parfaitement.
Chapeau, j'aurai pu chercher longtemps sans jamais trouver cette solution.
Merci infiniment