Mail auto VB (avec liste excel) ??
Résolu/Fermé
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
-
Modifié par manautop le 3/07/2012 à 12:22
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 6 juil. 2012 à 16:22
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 6 juil. 2012 à 16:22
A voir également:
- Mail auto VB (avec liste excel) ??
- Liste déroulante excel - Guide
- Yahoo mail - Guide
- Formule excel - Guide
- Excel liste déroulante en cascade - Guide
- Si et excel - Guide
11 réponses
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 juil. 2012 à 13:21
3 juil. 2012 à 13:21
Bonjour,
appExcel.Visible = False , en principe pas nécessaire, non visible par défaut.
Ta boucle a tourne mais ne fait aucune action ?
Les variables ne sont pas initialisées ?
Si tu veux mettre des variables dans les données elles ne doivenet pas êtres entourées de guillemets.
Je verrais plutôt ça dans le genre..
Attention, ce n'est qu'une piste, fait à main levée et sans test.
A+
appExcel.Visible = False , en principe pas nécessaire, non visible par défaut.
Ta boucle a tourne mais ne fait aucune action ?
Les variables ne sont pas initialisées ?
Si tu veux mettre des variables dans les données elles ne doivenet pas êtres entourées de guillemets.
Je verrais plutôt ça dans le genre..
Dim Texte= "Hello" & "balablablabal" dim Titre = "Le titre " With wbExcel.Sheets(1) Dim Ligne = .Cells(65530, i).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row For a = Ligne To 1 Step -1 dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) NewMail.Recipients.Add (.Cells(Ligne, "D")) NewMail.Subject = Titre & .Cells(Ligne, "C") NewMail.Body = Texte NewMail.Attachments.Add (.Cells(Ligne, "E")) NewMail.Send() Next a NewMail = Nothing 'je ne sais pas si en .Net c'est encore obligatoire End With
Attention, ce n'est qu'une piste, fait à main levée et sans test.
A+
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
3 juil. 2012 à 16:57
3 juil. 2012 à 16:57
Bonjour,
merci de ta réponse (mm si je bloque toujours ^^)
voici mon code qui ne amrche pas mais presque ^^
'app outlook
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
' appel(d) 'excel
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open("adresse du doc excel")
'2012 BELUX MkgFund.xlsx")
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(1)
appExcel.Visible = False
For i = 1 To 6
Dim ligne = wbExcel.Sheets(1).Cells(65530, i).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
With wbExcel.Sheets(1)
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
NewMail.Recipients.Add("jonathan.sebban@accor.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
NewMail.Attachments.Add(.Cells(ligne, "E"))
NewMail.Send()
End With
Next i
End Sub
End Class
pour info le sujet du mail et le corps du mail est toujours le mm, mais ç abloque sur les variable des colonnes
merci de ta réponse (mm si je bloque toujours ^^)
voici mon code qui ne amrche pas mais presque ^^
'app outlook
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
' appel(d) 'excel
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open("adresse du doc excel")
'2012 BELUX MkgFund.xlsx")
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(1)
appExcel.Visible = False
For i = 1 To 6
Dim ligne = wbExcel.Sheets(1).Cells(65530, i).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
With wbExcel.Sheets(1)
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
NewMail.Recipients.Add("jonathan.sebban@accor.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
NewMail.Attachments.Add(.Cells(ligne, "E"))
NewMail.Send()
End With
Next i
End Sub
End Class
pour info le sujet du mail et le corps du mail est toujours le mm, mais ç abloque sur les variable des colonnes
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 juil. 2012 à 17:31
4 juil. 2012 à 17:31
Re,Possible qu'a partir de VB la syntaxe tel quel n'est pas reconnue.
Essayer (pour la colonne E) .Cells(ligne, 5)
Sinon met un point d'arrèet sur cette ligne et regarde ce qu'il y a dans cette cellule.
Note elle doit comporter le chemin complet du fichier à joindre.
A+
Essayer (pour la colonne E) .Cells(ligne, 5)
Sinon met un point d'arrèet sur cette ligne et regarde ce qu'il y a dans cette cellule.
Note elle doit comporter le chemin complet du fichier à joindre.
A+
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
5 juil. 2012 à 14:53
5 juil. 2012 à 14:53
bonjour
et merci du temps que vous m'accordez
malheureusement ça ne marche toujours pas ça me donne une erreur du type Exception de HRESULT : 0x800A03EC
mon code
Imports System.IO
Imports System
Imports System.Windows
Imports System.Reflection
Class MainWindow
'app outlook
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
' appel(d) 'excel
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open("c:\test.xlsx")
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(1)
appExcel.Visible = False
For i = 1 To 6
Dim ligne = wbExcel.Sheets(1).Cells(65530, i).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
With wbExcel.Sheets(1)
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
NewMail.Recipients.Add("jonathan.sebban@live.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
NewMail.Attachments.Add(.Cells(ligne, "5"))
NewMail.Send()
End With
Next i
End Sub
End Class
j'vais pleurer ^^
je ne vois pas pourquoi ça ne marche pas l'erreur est toujours ici => NewMail.Attachments.Add(.Cells(ligne, "5"))
et merci du temps que vous m'accordez
malheureusement ça ne marche toujours pas ça me donne une erreur du type Exception de HRESULT : 0x800A03EC
mon code
Imports System.IO
Imports System
Imports System.Windows
Imports System.Reflection
Class MainWindow
'app outlook
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
' appel(d) 'excel
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open("c:\test.xlsx")
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(1)
appExcel.Visible = False
For i = 1 To 6
Dim ligne = wbExcel.Sheets(1).Cells(65530, i).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
With wbExcel.Sheets(1)
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
NewMail.Recipients.Add("jonathan.sebban@live.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
NewMail.Attachments.Add(.Cells(ligne, "5"))
NewMail.Send()
End With
Next i
End Sub
End Class
j'vais pleurer ^^
je ne vois pas pourquoi ça ne marche pas l'erreur est toujours ici => NewMail.Attachments.Add(.Cells(ligne, "5"))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 5/07/2012 à 15:52
Modifié par lermite222 le 5/07/2012 à 15:52
Quand tu met le N° de la colonne IL NE FAUT PAS DE GUILLEMET c'est un nombre et pas une valeur alphanumérique
PS : encore un peu et je t'envoi une boite de mouchoirs !! :D
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
PS : encore un peu et je t'envoi une boite de mouchoirs !! :D
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
5 juil. 2012 à 16:10
5 juil. 2012 à 16:10
rebonjour et encore merci,
J ai bien besoin d'une boite je crois.
Sans guillement, avec à l'envers etc ça ne veut pas marcher , je ne comprend pas pourquoi je ne vois pas mon erreur
j'ai l'impression que mon visual basic déconne
en effet pour le test j'ai mis l'adresse d'un fichier lamda NewMail.Attachments.Add("Y:\DPT-FID\test.txt") et là ça marche sauf qu'il ne m'envoit que 6 fois le fichier...
j'imagine que le problème viens d'ci For i = 1 To 6 je pensais que le 1 to 6 voulait dire de la colonne A à F mais ça ne m'envois que 6 mails (si je change la valeur du 6 il m'anvois autant de mails que la nouvelle valeur)
je descend chercher une boite de mouchoir ^^
J ai bien besoin d'une boite je crois.
Sans guillement, avec à l'envers etc ça ne veut pas marcher , je ne comprend pas pourquoi je ne vois pas mon erreur
j'ai l'impression que mon visual basic déconne
en effet pour le test j'ai mis l'adresse d'un fichier lamda NewMail.Attachments.Add("Y:\DPT-FID\test.txt") et là ça marche sauf qu'il ne m'envoit que 6 fois le fichier...
j'imagine que le problème viens d'ci For i = 1 To 6 je pensais que le 1 to 6 voulait dire de la colonne A à F mais ça ne m'envois que 6 mails (si je change la valeur du 6 il m'anvois autant de mails que la nouvelle valeur)
je descend chercher une boite de mouchoir ^^
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
5 juil. 2012 à 17:05
5 juil. 2012 à 17:05
Bon, je vois que tu te mélange aussi les pinceaux avec les Next et With..
J'ai tester la validation de cellules Excel, c'est OK dans l'exemple ci-dessous.
Par contre je ne sais pas tester le mail j'ai pas Outlook
Après le stop tu regarde dans la fenêtre exécution si c'est bien le nom et chemin complet de la pièce jointe.
Si c'est bon tu tape F5
Après un ou deux essais stop le programme et enlève le stop et les débug.print
Note, pour la cellule fallait juste ajouter le contenu en l'occurrence.. texte.
Si c'était des nombres y faudrait mettre value.
La syntaxe avec la lettre fonctionne, c'est plus facile que de chaque fois rechercher le N° de la colonne.
La syntaxe d'Excel avec VB.Net est plus stricte que dans Excel.
A+
J'ai tester la validation de cellules Excel, c'est OK dans l'exemple ci-dessous.
Par contre je ne sais pas tester le mail j'ai pas Outlook
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'app outlook 'Supprimer les déclarations en haut du module Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application 'Pas le bon endroit pour déclarer 'Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel Dim i As Integer Dim Chemin As String = "D:\Repertoire\Fichier.xlsx" If Dir(Chemin) = "" Then Stop End If 'Ouverture de l'application appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel wbExcel = appExcel.Workbooks.Open(Chemin) 'wsExcel correspond à la première feuille du fichier wsExcel = wbExcel.Worksheets(1) appExcel.Visible = True With wsExcel Dim ligne = .Cells(65530, 1).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row Debug.Print(ligne) For i = 1 To ligne Debug.Print(.Cells(i, "E").text) Stop Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) NewMail.Recipients.Add("jonathan.sebban@live.com") ' pour test NewMail.Subject = "document demandé" NewMail.Body = "veuiller trouver ci joint le document...." NewMail.Attachments.Add(.Cells(i, "E").text) NewMail.Send() NewMail = Nothing Next i End With wbExcel.Close() appExcel.Quit() 'OutlookApp.quit() End Sub
Après le stop tu regarde dans la fenêtre exécution si c'est bien le nom et chemin complet de la pièce jointe.
Si c'est bon tu tape F5
Après un ou deux essais stop le programme et enlève le stop et les débug.print
Note, pour la cellule fallait juste ajouter le contenu en l'occurrence.. texte.
Si c'était des nombres y faudrait mettre value.
La syntaxe avec la lettre fonctionne, c'est plus facile que de chaque fois rechercher le N° de la colonne.
La syntaxe d'Excel avec VB.Net est plus stricte que dans Excel.
A+
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
5 juil. 2012 à 19:05
5 juil. 2012 à 19:05
Merci à vous
ça à marché une fois (mais il à fallu que je sépare l'adresse du fichier joint sur 2 variable car cela depassait les 255 chararcteres)
et pouf erreur sur NewMail.Recipients.Add("jonathan.sebban@live.com") => Opération abandonnée (Exception de HRESULT : 0x80004004 (E_ABORT))
j'abandonne pour today
j'ai bien compris mes erreur mais là haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
je reprend demain matin ^^
Bonne soirée à vous et merci beaucoup
ça à marché une fois (mais il à fallu que je sépare l'adresse du fichier joint sur 2 variable car cela depassait les 255 chararcteres)
et pouf erreur sur NewMail.Recipients.Add("jonathan.sebban@live.com") => Opération abandonnée (Exception de HRESULT : 0x80004004 (E_ABORT))
j'abandonne pour today
j'ai bien compris mes erreur mais là haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
je reprend demain matin ^^
Bonne soirée à vous et merci beaucoup
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
6 juil. 2012 à 07:13
6 juil. 2012 à 07:13
Re,
Si tu a un compte Gmail voir cette discussion qui semble fonctionner.
A+
Si tu a un compte Gmail voir cette discussion qui semble fonctionner.
A+
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
6 juil. 2012 à 15:09
6 juil. 2012 à 15:09
Bonjour,
Non non pas de compte gmail mais allez savoir ce qui se passe
je vais chercher un peu et lire votre lien qd mm
je reviendrais surement (en tt cas quoi qu'il arrive pour mettre la solution finale)
merci de votre aide je vais essayer de le finir pour lundi
Bon week end à vous
Non non pas de compte gmail mais allez savoir ce qui se passe
je vais chercher un peu et lire votre lien qd mm
je reviendrais surement (en tt cas quoi qu'il arrive pour mettre la solution finale)
merci de votre aide je vais essayer de le finir pour lundi
Bon week end à vous
manautop
Messages postés
138
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
24 janvier 2013
3
6 juil. 2012 à 16:22
6 juil. 2012 à 16:22
Re,
en trifouillantn un peu j'ai trouvé une solution qui marche
c'est pas très éléguant certe :
cela consiste mettre en dur l'addresse su dossier dans lequel le excel se trouve puis de récupérer sur une variable le nom du fichier et ensuite de mettre les variables...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'app outlook
'Supprimer les déclarations en haut du module
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
'Pas le bon endroit pour déclarer
'Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
Dim i As Integer
Dim Chemin As String = "C:\Envois mkg fund.xlsx"
If Dir(Chemin) = "" Then
End If
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open(Chemin)
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets("settings")
appExcel.Visible = False
Dim r
Dim u = "\\test\dossierdetes\"
With wsExcel
Dim ligne = .Cells(65530, 1).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
For i = 1 To ligne
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
r = (.Cells(i, "F").text)
NewMail.Recipients.Add("j.pub@live.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
TextBox1.Text = u & r
NewMail.Attachments.Add(u & r)
NewMail.Send()
NewMail = Nothing
Next i
End With
wbExcel.Close()
appExcel.Quit()
'OutlookApp.quit()
End Sub
End Class
voila merci beaucoup pour toute l'aide apportée
en trifouillantn un peu j'ai trouvé une solution qui marche
c'est pas très éléguant certe :
cela consiste mettre en dur l'addresse su dossier dans lequel le excel se trouve puis de récupérer sur une variable le nom du fichier et ensuite de mettre les variables...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'app outlook
'Supprimer les déclarations en haut du module
Dim OutlookApp As New Microsoft.Office.Interop.Outlook.Application
'Pas le bon endroit pour déclarer
'Dim NewMail As Microsoft.Office.Interop.Outlook.MailItem
Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
Dim i As Integer
Dim Chemin As String = "C:\Envois mkg fund.xlsx"
If Dir(Chemin) = "" Then
End If
'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open(Chemin)
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets("settings")
appExcel.Visible = False
Dim r
Dim u = "\\test\dossierdetes\"
With wsExcel
Dim ligne = .Cells(65530, 1).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
For i = 1 To ligne
Dim NewMail = OutlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
r = (.Cells(i, "F").text)
NewMail.Recipients.Add("j.pub@live.com") ' pour test
NewMail.Subject = "document demandé"
NewMail.Body = "veuiller trouver ci joint le document...."
TextBox1.Text = u & r
NewMail.Attachments.Add(u & r)
NewMail.Send()
NewMail = Nothing
Next i
End With
wbExcel.Close()
appExcel.Quit()
'OutlookApp.quit()
End Sub
End Class
voila merci beaucoup pour toute l'aide apportée