Envoi de mail sous VBA : ok sous 2000, bug sous 2007

le Fnake

XLDnaute Junior
Bonjour,

j'ai créé sous Excel 2000 un petit fichier pour faire avec plusieurs collègues une commande de capsules de café chères à Georges Clownesque : chacun choisit le nombre et le type de capsule, et quand tout le monde a choisi, une macro permet d'envoyer un mail récapitulatif de ce que chacun a commandé et donc me doit.

Sous Excel 2000, la macro marche sans le moindre problème, mais depuis que je suis sous Excel2007, je recois le message "erreur d'execution '5' : argument ou appel de procédure incorrect" au niveau de l'instruction "ActiveWorkbook.FollowHyperlink Address:=URLto", où URLto est de la forme "mailto:toto@tata.fr;bobo@baba.fr?subject=Commande de café&body=vous avez commandé çà, donnez moi des soussous si vous voulez vos capsules"

Le plus curieux, c'est que cette erreur m'est apparue en fin de semaine dernière, et alors que j'étais prêt à envoyer ce même type de message, ca a soudain marché... mais plus maintenant...
Merci pour votre aide

Code:
Private Sub Envoi_Bouton_Click()
Dim Adresses As String, Objet As String, CorpsMsg As String, Recap As String
Dim URLto As String

Adresses = "mailto:" 'adresses sont obtenues par la suite
Objet = "Commande de café" 'objet du mail
CorpsMsg = "Voici le résumé de la dernière commande de café :" & "%0D%0A" & "%0D%0A" 'début corps du message

For Each cell In Range("D1:O1")
' recap des commandes par personne
    If Not (cell.Value = "") And Not (cell.Value = "TOTAL") Then 'permet de se limiter à zone utile
        If cell.Offset(15, 0).Value > 0 Then 'si la personne a commandé qqch
            Commande = ""
            For Each cell2 In Range(Cells(3, cell.Column), Cells(15, cell.Column))
                If cell2.Value <> "" Then
                    Commande = Commande & " " & cell2.Value & " " & Range("B" & cell2.Row).Value
                End If
            Next
            CorpsMsg = CorpsMsg & "- " & cell.Value & " : " & FormatCurrency(cell.Offset(17, 0)) & " avec" & Commande & "." & "%0D%0A"
            Adresses = Adresses & cell.Offset(1, 0) & "; "
        End If
    End If
Next

Recap = "Récapitulatif : "
maColonne = 4
Do Until Cells(1, maColonne).Value = "TOTAL"
maColonne = maColonne + 1
Loop
For i = 3 To 15
    If Cells(i, maColonne).Value > 0 Then
    Recap = Recap & Cells(i, maColonne).Value & " " & Range("B" & i) & ", "
    End If
Next
Recap = Left$(Recap, Len(Recap) - 2)

CorpsMsg = CorpsMsg & "%0D%0A" & Recap & "%0D%0A" & "%0D%0A" & "Merci !" & "%0D%0A"
Adresses = Left$(Adresses, Len(Adresses) - 2)
URLto = Adresses & "?subject=" & Objet & "&body=" & CorpsMsg
ActiveWorkbook.FollowHyperlink Address:=URLto
'ActiveSheet.Hyperlinks.Add Anchor:=Range("d30"), Address:=URLto
'Range("d30").Hyperlink.Follow
End Sub
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

Bonjour Le Fnake :),
Ne te manquerait-il pas une référence (Sous VBA, Outils -> Références puis cocher l'application à utiliser pour envoyer le mail) ?
Sinon, personnellement, j'utilise OutLook avec le code suivant
Code:
Sub EnvoyerMail()
' Envoi du BàT par mail
' Thierry (XLD)
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
' Avec pièce jointe
If CheminDestination <> "" Then
    With OLMail
          .To = MailTo ' Destinataire
          .CC = MailCC ' Copie
          .Importance = olImportanceNormal
          .Subject = ObjetMessage ' Sujet
          .Body = CorpsMessage ' Message
          .Attachments.Add CheminDestination & NouveauNomFichier ' Pièce jointe
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True ' Accusé de dépôt
          .ReadReceiptRequested = True ' Accusé de lecture
'          .Send '<<<<<<<<<<<<<<<Pour envoyer directement
          .Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
    End With
' Sans pièce jointe
Else
    With OLMail
          .To = MailTo
          .CC = MailCC
          .Importance = olImportanceNormal
          .Subject = ObjetMessage
          .Body = CorpsMessage
'          .Attachments.Add Chemin
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True
          .ReadReceiptRequested = True
'          .Send
          .Display
    End With
End If
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub
avec la référence OutLook ouverte et les variables utilisées déclarées en Public.
Bonne journée :cool:
 

le Fnake

XLDnaute Junior
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

Bonjour,

hélas, je suis sous thunderbird, et du coup, je n'ai pas trouvé de référence correspondante dans Outils/Références (et l'ajout de tous les dll de thunderbird ne donne rien). Quant au code VBA proposé, vu qu'il est pour outlook, ben ca ne fonctionne pas.

Par ailleurs, en parcourant d'autres fils, j'ai vu la commande "sendmail", mais celle-ci envoie automatiquement le classeur, et n'est donc pas adapté à mon objectif : je préfère envoyer un mail dont le corps de texte contient l'information plutôt qu'envoyer un fichier excel en PJ.

Merci

EDIT : après lecture d'un autre fil, j'ai pu voir que le message ne doit pas dépasser 620 caractères, or j'en suis à 749 rien que pour mon corps de message... peut-être une piste ?
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

Bonsoir Le Fnake :),
On peut être au boulot et ne disposer que de Thunderbird... :D
Si ton patron est si avare, échange lui de bons développements contre un Office bien complet (bien que, pour les capsules de café, ça va peut-être pas le faire... :eek:).
Je ne comprends pas comment tu peux être en Excel 2007, et ne pas avoir Outlook... A voir peut-être avec ton administrateur réseau...
Bon courage en attendant :cool:
 

le Fnake

XLDnaute Junior
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

Bonjour (ou bonsoir)

jusqu'à maintenant, le courrielleur par défaut au boulot, c'est Eudora (beurk), et j'ai préféré opter pour ma part pour Thunderbird (on est, encore pour l'instant, admin de nos machines). Quant à Outlook, quand je suis passé à Office 2007, je me suis pas posé la question d'Outlook, étant satisfait de Thunderbird.

Pour revenir à mon problème qui m'empeche de dormir le nuit (à moins que ce ne soit le café ? ;-)), je pense que mon problème doit venir de la taille du message, peut-être plus grand que d'habitude.
Une solution consisterait peut-être à créer un fichier texte ajouté en PJ dans le mail ? Est-ce faisable ? merci
 

JNP

XLDnaute Barbatruc
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

Bonsoir Le Fnake :),
Avec la procédure Outlook, pas de problème pour les pièces jointes. Avec ta procédure, je ne sais pas, mais j'ai déjà vu du code qui ressemble au tien sur ce forum. Fait une recherche sur "envoyer mail". J'espère que tu trouveras ton bonheur...
Bonne soirée :cool:
 

le Fnake

XLDnaute Junior
Re : Envoi de mail sous VBA : ok sous 2000, bug sous 2007

bonjour,

il est en effet fort probable qu'il existât un code semblable au mien sur le forum dans la mesure où il me semble bien que j'ai dû fortement y puiser mon inspiration lors de la création de mon fichier :) Probablement encore un coup de @+Thierry...
Maintenant, la question est de savoir où retrouver le dit code... :D
 

Discussions similaires

Réponses
1
Affichages
160
Réponses
0
Affichages
137

Statistiques des forums

Discussions
312 109
Messages
2 085 381
Membres
102 876
dernier inscrit
BouteilleMan