Bonjour à tous,
Après au moins 3 ans que je ne suis pas revenu sur ce site du fait que je ne travaillait que très peu avec excel, faute des applicatifs entreprises... je cherche désormais un moyen de créer une macro pour me simplifier la vie.
Cette macro doit prendre une feuille excel, la transformer en pdf puis l'envoyer par outlook.
J'ai trouvé plein de "morceaux" de codes mais étant très débutant, je vois toujours le message : "erreur de compilation... type non défini par l'utilisateur". Je sais que c'est un sujet déjà évoqué mais je ne trouve pas la source du problème Je suis sur Excel 2007.
Je suis perdu après trois jours de tentatives infructueuses.
Voici le code sur lequel je travaille:
Sub PDF_Mail2()
Dim nom As String, ol As New Outlook.Application, derlg As Integer
Dim olMail As MailItem, admail As String, messmail As String, i As Integer
'ci-dessous, on prend les mails dans une feuille
'derlg = Sheets("mails").Range("a" & Sheets("mails").Rows.Count).End(xlUp).Row
With Sheets("factures clients")
.Select
'si le dossier ou tu veux garder le PDF est dans un sou-repertoire de ce fichier xlsm, admettons "ARCHIVES"
nom = ThisWorkbook.Path & "\" & "factures clients" & "\" & .Range("a1") & .Range("h42") & ".pdf"
MsgBox nom
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nom, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
OpenAfterPublish:=False
End With
'Set ol = New Outlook.Application
'ol As New Outlook.Application
messmail = "ci-joint votre commande qui commence à sérieusement me les briser..."
'ci-dessous envoyé à tout le monde
'For i = 2 To derlg 'boucle du début à la fin de ta colonne des adresses mail
'admail = admail & Sheets("mails").Range("a" & i)
'If i = derlg Then Exit For
'admail = admail & "; "
'Next i
'si tu mets le mail en B20
admail = .Range("B20")
Set ol = New Outlook.Application
Set olMail = ol.CreateItem(olMailItem)
With olMail
.To = admail
.Subject = "exemple : commande effectuée" 'Sujet
.Body = messmail 'Corps du mail
.Attachments.Add nom
.Display '.Send 'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
Est-ce que quelqu'un a une idée d'où vient le bugg?
Merci d'avance de votre aide.
Marc
Après au moins 3 ans que je ne suis pas revenu sur ce site du fait que je ne travaillait que très peu avec excel, faute des applicatifs entreprises... je cherche désormais un moyen de créer une macro pour me simplifier la vie.
Cette macro doit prendre une feuille excel, la transformer en pdf puis l'envoyer par outlook.
J'ai trouvé plein de "morceaux" de codes mais étant très débutant, je vois toujours le message : "erreur de compilation... type non défini par l'utilisateur". Je sais que c'est un sujet déjà évoqué mais je ne trouve pas la source du problème
Je suis perdu après trois jours de tentatives infructueuses.
Voici le code sur lequel je travaille:
Sub PDF_Mail2()
Dim nom As String, ol As New Outlook.Application, derlg As Integer
Dim olMail As MailItem, admail As String, messmail As String, i As Integer
'ci-dessous, on prend les mails dans une feuille
'derlg = Sheets("mails").Range("a" & Sheets("mails").Rows.Count).End(xlUp).Row
With Sheets("factures clients")
.Select
'si le dossier ou tu veux garder le PDF est dans un sou-repertoire de ce fichier xlsm, admettons "ARCHIVES"
nom = ThisWorkbook.Path & "\" & "factures clients" & "\" & .Range("a1") & .Range("h42") & ".pdf"
MsgBox nom
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nom, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
OpenAfterPublish:=False
End With
'Set ol = New Outlook.Application
'ol As New Outlook.Application
messmail = "ci-joint votre commande qui commence à sérieusement me les briser..."
'ci-dessous envoyé à tout le monde
'For i = 2 To derlg 'boucle du début à la fin de ta colonne des adresses mail
'admail = admail & Sheets("mails").Range("a" & i)
'If i = derlg Then Exit For
'admail = admail & "; "
'Next i
'si tu mets le mail en B20
admail = .Range("B20")
Set ol = New Outlook.Application
Set olMail = ol.CreateItem(olMailItem)
With olMail
.To = admail
.Subject = "exemple : commande effectuée" 'Sujet
.Body = messmail 'Corps du mail
.Attachments.Add nom
.Display '.Send 'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
Est-ce que quelqu'un a une idée d'où vient le bugg?
Merci d'avance de votre aide.
Marc