Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2007, 16h35   #1
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
Par défaut Connexion à une base access

Bonjour, je cherche à envoyer des mails depuis Outook alimenté par une base ACCESS mais j'ai une erreur à cette ligne:
Dim Mail As New ADODB.Recordset

Je pense qu'il ne doit pas trouver La BD mais je ne sais pas comment on fait

Merci pour votre aide



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub ParcourtRequete()
  Dim MonOutlook As Object
  Dim EMail As Object
  Set MonOutlook = Outlook.Application
  Dim Mail As New ADODB.Recordset
  MaBase.Open "R_Mail", CurrentProject.Connection
  Mail.MoveFirst
  While Not MaBase.EOF
    Set EMail = MonOutlook.CreateItem(olMailItem)
    EMail.To = Mail("EMail")
    EMail.Subject = "Déménagement"
    EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
    EMail.Send
    MaBase.MoveNext
  Wend
  Mail.Close
  Set Mail = Nothing
  Set EMail = Nothing
End Sub
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 21h16   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Pourquoi utilises-tu ADO et pas DAO ?

As-tu déclaré ADO dans les références de ton projet.

Si tu regarde dans ma signature, il y a un lien vers le publipostage, l'article traite aussi du mailing.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 09h24   #3
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
En fait c'est une script que j'ai trouvé tout fait à inclure dans un module ACCESS.
Il s'execute parfaitement sous ACCESS sauf que j'ai l'eternel demande de confirmation pour l'envoi du mail génnerée par OUTLOOK.
L'auteur de ce script indiquait que pour éviter ce probleme, il suffisait d'executer ce code depuis outlook, ce que j'ai fait mais ca ne fonctionne pas sans doute pour les raisons que tu viens d'énumerer.
Le problème c'est que je suis nul en ADO ou DAO et que je ne sais pas établir la connexion avec la base de données
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 09h57   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Regarde le tuto de ma signature sur le publipostage, il y a les explications des codes utilisés.

Et tu peux revenir poser des questions complémentaires si tu en éprouve le besoin.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 09h59   #5
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Salut,

Ton code devrait plutôt ressembler à ça en suivant la suggestion d'Heureux-oli :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub ParcourtRequete()
  Dim appAccess As Access.Application
  Dim EMail As Object
  Dim oDb As DAO.Database
  Dim oRst As DAO.Recordset
 
  Set appAccess = CreateObject("Access.Application")
  Set oDb = appAccess.OpenDataBase(Chemin+Nom)
 
  With oDb
      Set oRst = .OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
          Set EMail = MonOutlook.CreateItem(olMailItem)
          EMail.To = oRst("EMail")
          EMail.Subject = "Déménagement"
          EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
          EMail.Send
          oRst.MoveNext
      Wend
  End With
  oRst.Close
  oDb.Close
  appAccess.Quit
  Set oRst = Nothing
  Set oDb = Nothing
  Set appAccess = Nothing
End Sub
Je n'ai pas testé mais dans l'esprit c'est ça
Essaie de déclarer EMail avec le bon type (je n'utilise pas Outlook)
Pense à cocher les 2 références dans Outlook :
Microsoft Access x.0
Microsoft DAO x.x
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h01   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
En regardant le code, Email, n'est pas déclaré de la bonne manière, Il faut ajouter la référence Outlook.

Le plus simple, ce serait de lire le tuto.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h03   #7
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Citation:
Envoyé par Heureux-oli
En regardant le code, Email, n'est pa
????
Tu veux dire ??

Code :
Set EMail = MonOutlook.CreateItem(olMailItem)
Ca devrait ressembler à :
Code :
Set EMail = Application.CreateItem(olMailItem)
Enfin je crois
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h05   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
J'ai fait un Tab accidentel et le post est parti tout seul.
Ce n'était donc pas de la légitime défense.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h43   #9
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
J'ai l'erreur suivante " membre de méthode ou de données introuvable"
à cette ligne
Code :
Set oDb = appAccess.OpenDataBase("d:\mail.mdb")
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub ParcourtRequete()
  Dim appAccess As Access.Application
  Dim EMail As Object
  Dim oDb As DAO.Database
  Dim oRst As DAO.Recordset
 
  Set appAccess = CreateObject("Access.Application")
  Set oDb = appAccess.OpenDataBase("d:\mail.mdb")
 
  With oDb
      Set oRst = .OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
          Set EMail = Application.CreateItem(olMailItem)
          EMail.To = oRst("EMail")
          EMail.Subject = "Déménagement"
          EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
          EMail.Send
          oRst.MoveNext
      Wend
   End With
      oRst.Close
      oDb.Close
      appAccess.Quit
      Set oRst = Nothing
      Set oDb = Nothing
      Set appAccess = Nothing
End Sub
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h46   #10
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun


Code :
Set oDB = appAccess.OpenCurrentDatabase
J'ai fait ce code de tête. alors... re
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h52   #11
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
Ce coup j'ai une erreur sur la ligne :
Code :
Set oDb = appAccess.OpenCurrentDatabase
"argument non facultatif"


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub ParcourtRequete()
  Dim appAccess As Access.Application
  Dim EMail As Object
  Dim oDb As DAO.Database
  Dim oRst As DAO.Recordset
 
  Set appAccess = CreateObject("Access.Application")
    Set oDb = appAccess.OpenCurrentDatabase
 
  With oDb
      Set oRst = .OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
          Set EMail = Application.CreateItem(olMailItem)
          EMail.To = oRst("EMail")
          EMail.Subject = "Déménagement"
          EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
          EMail.Send
          oRst.MoveNext
      Wend
   End With
      oRst.Close
      oDb.Close
      appAccess.Quit
      Set oRst = Nothing
      Set oDb = Nothing
      Set appAccess = Nothing
End Sub
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h53   #12
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
je n'ai pas mis la suite mais il faut quand même spécifier le nom de la db :

Code :
Set oDB = appAccess.OpenCurrentDatabase("d:\mail.mdb")
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 10h55   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Perso, je le ferais dans l'autre sens, envoyer des mail depuis Access.

Il faut ajouter la référence Microsoft Access dans Outlook.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h02   #14
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
J'ai l"erreur suivante :
"Fonction ou variable attendue"
à la ligne
Code :
  Set oDb = appAccess.OpenCurrentDatabase("d:\mail.mdb")

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub ParcourtRequete()
  Dim appAccess As Access.Application
  Dim EMail As Object
  Dim oDb As DAO.Database
  Dim oRst As DAO.Recordset
 
  Set appAccess = CreateObject("Access.Application")
  Set oDb = appAccess.OpenCurrentDatabase("d:\mail.mdb")
 
 
  With oDb
      Set oRst = .OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
          Set EMail = Application.CreateItem(olMailItem)
          EMail.To = oRst("EMail")
          EMail.Subject = "Déménagement"
          EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
          EMail.Send
          oRst.MoveNext
      Wend
   End With
      oRst.Close
      oDb.Close
      appAccess.Quit
      Set oRst = Nothing
      Set oDb = Nothing
      Set appAccess = Nothing
End Sub
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h04   #15
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
je ne l'execute pas depuis ACCESS pour eviter le message d'avertissement m'indiquant qu'une application tente d'envoyer un message.
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h16   #16
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
On va essayer une autre méthode :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim appAccess As New Access.Application
Dim EMail As Object
Dim oDb As DAO.Database
Dim oRst As DAO.Recordset
 
With appAccess 
   .OpenCurrentDatabase ("d:\mail.mdb")
   Set oDb = .CurrentDb
   With oDb
      Set oRst = .OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
      ....
      Wend
   End With
End With
....
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h21   #17
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
Sub ParcourtRequete()
  Dim appAccess As Access.Application
  Dim EMail As Object
  Dim oDb As DAO.Database
  Dim oRst As DAO.Recordset
 
  Set appAccess = CreateObject("Access.Application")
  Set oDb = appAccess.OpenDatabase("d:\mail.mdb")
 
      Set oRst = oDB.OpenRecordset("R_Mail")
      oRst.MoveFirst
      While Not oRst.EOF
          Set EMail = Application.CreateItem(olMailItem)
          EMail.To = oRst("EMail")
          EMail.Subject = "Déménagement"
          EMail.Body = "Madame, Monsieur, Nous vous informons que nous allons déménager"
          EMail.Send
          oRst.MoveNext
      Wend
 
 
      oRst.Close
      oDb.Close
      appAccess.Quit
      Set oRst = Nothing
      Set oDb = Nothing
      Set appAccess = Nothing
End Sub
R-Mail est une table ou une requête ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h31   #18
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
R_Mail est une requête.

La dernière solution de Kikof semble fonctionnée.
J'ai simplement l'ouverture de la BdD qui s'affiche et me demande confirmation.
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 11h51   #19
Membre régulier
 
Inscription : juin 2006
Messages : 324
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2006
Messages : 324
Points : 80
Points : 80
merci à tous pour votre aide
nicolasferraris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h36.


 
 
 
 
Partenaires

Hébergement Web