IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Pb liaison Acces Outlook


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 52
    Points
    52
    Par défaut Pb liaison Acces Outlook
    bonjour,
    j'ai repris dans le forum une procédure pour envoyer des mails directement d'access 2007 en utilisant outlook, cette procédure marche parfaitement bien sur ma machine, mais lorsque je transfère mon appli sur une autre machine, je plante sur la ligne de code ci-dessous avec le message erreur en pièce jointe.Nom : ErreurVba.jpg
Affichages : 557
Taille : 109,8 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oApp = CreateObject("Outlook.Application")
    n'étant pas encore au top en vba, pouvez-vous m'aider à résoudre ce problème.

    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour patanar,

    Dans l'éditeur VBA, dans Outils, Références il faut que la bibliothèque soit présente sur la nouvelle machine. Il faut aussi que le fichier MSOUTL.OLB soit présent sur la machine.

    Bonne journée
    Images attachées Images attachées  

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 52
    Points
    52
    Par défaut Pb access outlook
    Bonsoir,

    le problème c'est que la bibliothèque est sur la seconde machine !!!
    au départ elle était manquante, j'avais donc remplacé, dans un premier temps sur la 2e machine, Microsoft.Outlook 14.0 Object Librairy par Microsoft.Outlook 12.0 Object Librairy qui lui était présent sur la seconde machine, mais j'ai eu la même erreur.

    j'ai donc récupérer MSOUTL.OLB sur ma machine et je l'ai mis dans le bon dossier sur la 2e machine, je n'ai le plus message bibliothèque manquante, mais l'erreur subsiste à l'exécution.

    et c'est là mon Pb.

    à savoir sur la machine avec laquelle j'ai développé j'ai access 2007 et outlook 2010, sur la machine où j'ai porté le programme j'ai access 2007 et outlook 2007

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour patanar,

    Normalement tu n'es pas obligé de remplacé le fichier MSOUTL.OLB. Tu fais juste modifier la référence Microsoft.Outlook 14.0 Object Librairy par Microsoft.Outlook 12.0 Object Librairy et tout devrait fonctionner. Je suis assez surpris de ce que tu constates. J'ai déjà installé des versions 2010 sous 2007 et si tu n'as pas de fonctions spéciales 2010 cela fonctionne très bien. Le code "Set oApp = CreateObject("Outlook.Application")" n'est pas exclusif à Access 2010 ou Outlook 2010.

    Ça va te prendre quelqu'un de meilleur que moi je ne vois pas le problème, désolé.

    Bonne journée

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 52
    Points
    52
    Par défaut Pb Access Outlook
    Merci de ton aide,

    j'ai effectivement essayé les 2 méthodes sur la 2e machine et je ne comprend vraiment pas pourquoi ça ne marche pas, je vais faire d'autres tests,

    merci encore

  6. #6
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    je pense que tu as dû déclarer ta variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim oApp as Outlook.Application
    Pour un problème de version entre différents postes, j'utilise ce genre de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim appOutlook As Object
        Dim objOutlook As Object
     
        Set appOutlook = CreateObject("Outlook.Application")
        Set objOutlook = appOutlook.createitem(0) ' Pour l'object oitemMail
    Chez moi, cela fonctionne sur les divers postes présents et sous différents versions (2010-2013)

    En espérant que cela t'aide.
    Cordialement

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 52
    Points
    52
    Par défaut access outlook
    voilà la totalité du code qui marche nickel sur ma machine et plante sur la machine où je l'ai implanté et en pièce jointe les Bib déclarées sachant que j'ai essayé sur la 2e machine Outlook 12 puisque 14 n'y était pas, puis Outlook 14 récupéré sur ma machine et le résultat est le même
    Nom : Bibli.jpg
Affichages : 478
Taille : 56,9 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    Public Sub Envoi(vTitMail, vTextMail, vAttach)
    Dim oApp As Outlook.Application
    Dim oMail As Outlook.MailItem
    Dim strContenu As String
    Dim oRst As DAO.Recordset
    Dim oFld As DAO.Field
    Dim strTo As String
    Set oApp = CreateObject("Outlook.Application")
    'Crée un nouveau message
    Set oMail = oApp.CreateItem(olMailItem)
    oMail.Body = vTextMail
       If vAttach <> "" Then
          oMail.Attachments.Add vAttach
       End If
    'Ouvre un recordset sur les clients
    Set oRst = CurrentDb.OpenRecordset("SELECT * FROM AdhMail")
    'Boucle sur chaque client et les ajoute au champ BCC du mail
    While Not oRst.EOF
      strTo = strTo & oRst.Fields("Mail") & "; "
      oRst.MoveNext
    Wend
    'Supprime la dernière virgule
    oMail.BCC = Left(strTo, Len(strTo) - 2)
    oMail.Subject = vTitMail
    'Envoi le mail
    oMail.Send
    'ferme le curseur
    oRst.Close
    Set oRst = Nothing
    'Ferme Outlook
    'oApp.Quit
    'Set oApp = Nothing
    End Sub
    merci de ton aide

  8. #8
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Cela doit fonctionner sur n'importe quelle version en désactivant la référence Outlook. (IMPORTANT si tu veux éviter le problème des références !)

    Essayes avec cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Public Sub Envoi(vTitMail, vTextMail, vAttach)
    '###############################
    ' Changement de définition des variables
    Dim oApp As object
    Dim oMail As object
    '###############################
    Dim strContenu As String
    Dim oRst As DAO.Recordset
    Dim oFld As DAO.Field
    Dim strTo As String
    Set oApp = CreateObject("Outlook.Application")
    ' ########################################
    ' Modifer 
    'Crée un nouveau message
    Set oMail = oApp.CreateItem(0)
    ' ########################################
    oMail.Body = vTextMail
       If vAttach <> "" Then
          oMail.Attachments.Add vAttach
       End If
    'Ouvre un recordset sur les clients
    Set oRst = CurrentDb.OpenRecordset("SELECT * FROM AdhMail")
    'Boucle sur chaque client et les ajoute au champ BCC du mail
    While Not oRst.EOF
      strTo = strTo & oRst.Fields("Mail") & "; "
      oRst.MoveNext
    Wend
    'Supprime la dernière virgule
    ' Pas sur mais moi je mets plutôt oMail.To = "adresses_mails"
    oMail.BCC = Left(strTo, Len(strTo) - 2)
    oMail.Subject = vTitMail
    'Envoi le mail
    oMail.Send
    'ferme le curseur
    oRst.Close
    Set oRst = Nothing
    'Ferme Outlook
    'oApp.Quit
    'set oMail = Nothing
    'Set oApp = Nothing
    End Sub

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 52
    Points
    52
    Par défaut access outlook
    Bonjour et

    Un grand merci, j'ai modifié mon code suivant tes conseils et j'ai testé ce matin, ça MARCHE NICKEL sur les 2 machines.

    Encore un grand merci pour ce gros coup de main, je commençais à désespérer.

  10. #10
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Pas de soucis
    On a rencontré ce genre de problème de version récemment ^^

  11. #11
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Je réveille ce post car je rencontre exactement le même problème que patanar. A l'ouverture d'un état, la facture est envoyée par mail. Seulement, dès que je lance la BDD sur un autre PC, il ne trouve pas le fichier MSOUTL.OLB alors qu'il fonctionne sur le 1er PC.
    J'ai entendu parlé de late binding et j'ai tenté des modifications mais rien y fait...Toujours le même problème.
    Si une âme charitable voulait bien voir mon code et me dire d'où vient le problème, je lui serait reconnaissant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub Ouvrir_facture_Click()
    DoCmd.OpenReport "Factures", acViewPreview, , "ID_Facture=" & ID_Facture
     
    Dim fichier As String
    Dim base As Database: Dim requete As String
     
    ' Late Binding
    '1) déclaration des objets
    Dim client_msg As Object
    Dim message As Object
     
    'Dim client_msg As New Outlook.Application
    'Dim message As Outlook.MailItem
     
    '2) affectation des objets
    Set client_msg = CreateObject("Outlook.Application")
    Set message = client_msg.CreateItem(olMailItem)
     
    Dim Adresse As String
    Adresse = Nz(DFirst("Mail", "T_Clients", "ID_Client=" & ID_Client.Value), "")
     
    fichier = Application.CurrentProject.Path & "\archives_factures\locations\Facture " & Parent!NomPrenom.Value & " (" & ID_Facture.Value & ")" & ".pdf"
    DoCmd.OutputTo acOutputReport, , acFormatPDF, fichier, False
     
    Set base = Application.CurrentDb
    requete = "UPDATE T_Factures SET Facture_Loc='Facture " & Parent!NomPrenom.Value & " (" & ID_Facture.Value & ")" & ".pdf' WHERE ID_Facture=" & ID_Facture.Value
    base.Execute requete
     
    Set ligne = base.OpenRecordset("SELECT Mail FROM T_Clients WHERE ID_Client=" & ID_Client.Value, dbOpenDynaset)
    Adresse = Nz(ligne![Mail], "")
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
     
    If Adresse Like "*@*.*" Then
        If (MsgBox("Joindre la facture par mail  ?", vbYesNo) = 6) Then
     
            Set message = client_msg.CreateItem(olMailItem)
     
            With message
                .Recipients.Add Adresse
                .Subject = "Votre facture"
                .Body = "Cher(e) client(e)," & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Veuillez trouver ci-joint votre facture de location." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Cordialement." & Chr(13) & Chr(10) & "L'équipe RL."
                .Attachments.Add fichier
                .Send
            End With
        End If
    End If
    Set client_msg = Nothing
    Set message = Nothing
     
    End Sub

  12. #12
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour.
    @garavous, le code semble bon. Verifie qu'Outlook est bien installé sur le 2° pc ?

    Cdlt

  13. #13
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Bonsoir Thierry_PALLIER,
    Outlook est bien installé sur les différents PC. La BDD a été crée sur Windows 10 avec Office 2019. Dès que je la teste sur Windows 7 avec un Pack Office 2010 ou 2013, ça ne fonctionne pas.
    Le problème ne viendrait pas de l'OS ?

  14. #14
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    Si tu parles de version antérieure à celle testée, vérifie que tu es bien late binding.
    Pour cela, tu vas checker tes références et contrôler que tu n'as rien en "bibliothèque introuvable" (ou je ne sais plus le libellé exact).

    Dans ton code, j'ai vu que tu avais mis "olMailItem". Il s'agit bien d'une constance que tu as déclaré ?
    Il te mettra variable non définie si ce n'est pas le cas.

    Comme le mentionne Thierry_PALLIER, vérifie qu'Outlook est bien installé sur l'ordinateur.
    Et surtout que tu n'as pas 2 versions du Pack Office qui traine donc l'une sans Outlook (oui ! ça arrive des fois !)

    En faisant une recherche google, j'ai vu que le sujet "il ne trouve pas le fichier MSOUTL.OLB" a été évoqué sur différents sites/forums.
    Il est possible, de ce que j'ai lu, de retélécharger ce fichier mais je n'ai pas testé.

    https://www.exefiles.com/fr/olb/msoutl-olb/
    https://www.winpcware.com/fr/extension/olb/msoutl-olb

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liaison Acces / FileMaker
    Par Kryone dans le forum Access
    Réponses: 4
    Dernier message: 24/06/2007, 22h18
  2. [Automation]liaison en outlook et access !
    Par leclone dans le forum Access
    Réponses: 1
    Dernier message: 19/04/2007, 13h27
  3. acces outlook via VBA access
    Par Kuuei dans le forum Access
    Réponses: 1
    Dernier message: 11/12/2006, 11h43
  4. [VBA-E] Liaison avec Outlook et Lookout pour envoi automatique
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/12/2006, 13h32
  5. Accès outlook par programmation VBA depuis access
    Par STOUPI dans le forum Access
    Réponses: 1
    Dernier message: 05/06/2006, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo