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 :

Probleme de Librairie sur macro Access [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en finance de marché
    Inscrit en
    Janvier 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant en finance de marché

    Informations forums :
    Inscription : Janvier 2017
    Messages : 40
    Par défaut Probleme de Librairie sur macro Access
    Bonjour,

    j'ai crée une macro VBA sous access afin de pouvoir ouvrir des queries, les rafraichir, puis les enregistrer dans un folder avant de les envoyer par mail automatique via Outlook 2010.

    J'ai développé un code pour l'ensemble de ces étapes, toutefois il semblerait que VBA ne reconnaisse pas ma fonction DimOutlook As New Outlook.Application en me disant que qu'il y a une erreur de type user defined non définie. Après avoir fouillé dans les forums, il semblerait que ce souci soit lié aux références de librairie et que je doive avoir en available reference Microsoft Office 15.0.

    Je n'ai toutefois pas cette référence dans ma librairie et pas sur que mon service IT puisse me l'installer, je suis donc bloqué sur Microsoft Office 14.0. Y-a-t-il un moyen de contourner ce souci avec une réécriture d'une partie du code ?

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Function Refresh()
     
        Dim ObjOutlook As New Outlook.Application
        Dim oBjMail
        Dim File_name
     
        Dim datRef          As Date
        Dim strPer          As String
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
     
        'Determination de la date du jour
     
        datRef = Date
        strPer = ""
        strPer = Format(datRef, "YYYY_MM_DD")
     
        '1ere file Test ------------------------------------------------------------
        'groupecc = "Test"
     
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Test", acViewNormal, acEdit
        DoCmd.RunCommand acCmdRefresh
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Test", "F:\File\"
     
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
     
        ChDir "F:\File" & strPer
        File_name = Application.GetOpenFilename(Title:="File_" & strPer, MultiSelect:=False)
        If Not IsArray(File_name) Then Exit Sub
        SigString = Environ("appdata") & _
                    "\Microsoft\Signatures\"
        f = Dir(SigString & "*.htm")    'on prend la première signature trouvée
        If f <> "" Then
            Signature = GetBoiler(SigString & f)
            Signature = Replace(Signature, "src=""", "src=""" & SigString)
        Else
            Signature = "pas de signature trouvée"
        End If
        On Error Resume Next
     
        With oBjMail
            .Display = True    ' Ici on peut supprimer pour l'envoyer sans vérification
            .To = "test@test.com"    ' le destinataire
            .BCC = "test@test.com" 'adresse destinataires pour info
            .Subject = " test"    ' l'objet du mail
            .HTMLBody = "Hello," & Signature   'le corps du mail et la signature
            .BodyFormat = olFormatHTML    'signature outlook
            For i = 1 To UBound(File_name)
                .Attachments.Add File_name(i)    '"C:\Data\essai.txt" ' ou Nomfichier
          Next
        End With
        Set oBjMail = Nothing
        Set ObjOutlook = Nothing
     
    End Sub
     
     
     
    Function GetBoiler(ByVal sFile As String) As String
    'OK
       Dim fso As Object
        Dim ts As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
        GetBoiler = ts.readall
        ts.Close
    End Function
    Si quelqu'un a une idée je suis preneur

    Merci à vous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim ObjOutlook As Object 
    set  ObjOutlook =CreateObject("Outlook.Application")

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    La solution est probablement le createobject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ObjOutlook As object 'Outlook.Application
    .
    .
    .
    Set ObjOutlook = CreateObject("Outlook.Application")
    Access devrait utiliser le Outlook courant sur ton poste quelle que soit la version.
    Note que malheureusement comme tu a défini un Object, le compilateur ne peut pas faire de vérification à priori et que si tu t'es trompé sur une propriété ou une méthode tu n'auras pas d'alerte et il n'y aura plus d'intellissens.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en finance de marché
    Inscrit en
    Janvier 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant en finance de marché

    Informations forums :
    Inscription : Janvier 2017
    Messages : 40
    Par défaut Thanks
    Hello,

    merci pour vos retours, que j'ai vu malheureusement un peu tard, j'ai décidé du coup de faire un code simplifié pour être sûr de mon coup et ça marche désormais (Je suis novice)

    J'ai réalisé une macro qui refresh l'ensemble de mes bases Access et fait un download dans un fichier cible, puis désormais cette macro qui fait les envois.

    Toutefois j'ai un nouveau souci, je ne sais pas si il est pertinent de la poster ici ou de créer un nouvel onglet, au cas ou merci de me le signaler et je ferais le nécessaire.

    Désormais ma macro prend le fichier dans le folder correspondant et l'envoie, aucun problème mais il y a plusieurs mais ...

    Mon mail, malgré les & Chr(10) ne saute pas à la ligne dans le HTML body ne revient pas à la ligne.
    Mon Attachments.Add lorsque je mets une spécificté en lui demandant de chercher le fichier test_date_du_jour n'arrive plus à trouver le patch, j'ai mal écris cette ligne je suppose
    Enfin le code que j'ai implanté pour la signature ne marche pas, il me dit que le GetBoiler n'est pas conforme, je ne vois pas en quoi

    Si vous avez des idées je suis preneur, je regarde les forums pour pouvoir spotter mes erreurs mais toujours rien pour le moment.

    Et merci à vous déjà pour vos contributions. Code ci dessous.

    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
    Sub Sendings()
     
        Dim a As MailItem
        Dim olApp As New Outlook.Application
     
        Dim datRef          As Date
        Dim strPer          As String
     
        'Determination de la date du jour
     
        datRef = Date
        strPer = ""
        strPer = Format(datRef, "YYYY_MM_DD")
     
        '1ere file Test ------------------------------------------------------------
        'groupecc = "Test"
     
        Set a = Outlook.CreateItem(olMailItem)
        Set olApp = Nothing
        With a
            .To = "a@b.com"
            .CC = "c@d.fr"
            .Subject = "MIG TEST"
            .BodyFormat = olFormatHTML
            .HTMLBody = "Hello," & Chr(10) & "Please find attached the details of the relevant positions migrated for LOT 6 and the status per position migrated." & Chr(10) & Chr(10) & "The file attached includes the new SSI." & Chr(10) & Chr(10) & "In case you have any question, do not hesitate to contact the undersigned." & Chr(10) & Chr(10) & "Thank you"
            .Attachments.Add ("F:\temp\AFFBSC_.xls" & strPer)
            .Display
     
        End With
     
      SigString = Environ("appdata") & _
                 "\Microsoft\Signatures\"
     F = Dir(SigString & "*.htm")    'on prend la première signature trouvée
      If F <> "" Then
          Signature = GetBoiler(SigString & F)
        Signature = Replace(Signature, "src=""", "src=""" & SigString)
      Else
          Signature = "pas de signature trouvée"
       End If
     
    End Sub
    Best regards

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 962
    Par défaut
    Bonjour,

    Voici 2 propositions sur les 3 questions que tu as posté (pour le retour à la ligne et le nom du fichier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .HTMLBody = "Hello," & VbCrLf & "Please find attached the details of the relevant positions migrated for LOT 6 and the status per position migrated." & VbCrLf & VbCrLf & "The file attached includes the new SSI." & VbCrLf & VbCrLf & "In case you have any question, do not hesitate to contact the undersigned." & VbCrLf & VbCrLf & "Thank you"
     
    .Attachments.Add ("F:\temp\AFFBSC_" & strPer & ".xls" )
    Note que VbCrLf (Carriage Return + Line feed) correspond à Chr(10) + Chr(13), car Chr(10) tout seul ne suffit pas sur Windows pour un retour à la ligne.
    Pour la signature, je ne sais pas, je n'ai jamais fait ...

  6. #6
    Invité de passage
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1
    Par défaut
    Bonjour,

    Tu dois utiliser des balises HTML pour le retour à la ligne (<p> pour l'ouverture de ligne et </p> pour la fermeture de ligne).

    Voici une fonction que j'ai faite pour l'envoi de mail avec pièces jointes :

    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
    Sub envoiEMail(destinataireMail As Variant, objetMail As String, messageMail As String, pieceMail As Variant)
        Dim otlApp As Outlook.Application
        Dim otlMail As Outlook.MailItem
        Dim i As Integer
        Dim destinataire As String
        Dim PJ As String
     
        Set otlApp = New Outlook.Application
        Set otlMail = otlApp.CreateItem(olMailItem)
     
        'Traitement des destinataires
        If IsArray(destinataireMail) Then
            For i = 0 To UBound(destinataireMail, 1)
                destinataire = destinataire & destinataireMail(i)
                If i <> UBound(destinataireMail, 1) Then
                    destinataire = destinataire & ";"
                End If
            Next i
        Else
            destinataire = destinataireMail
        End If
     
        'Traitement des pièces jointes
        If IsArray(pieceMail) Then
            For i = 0 To UBound(pieceMail, 1)
                otlMail.Attachments.Add pieceMail(i), olByValue
            Next i
        Else
            otlMail.Attachments.Add pieceMail, olByValue
        End If
     
        otlMail.To = destinataire
        otlMail.Subject = objetMail
        otlMail.BodyFormat = olFormatHTML
        otlMail.HTMLBody = messageMail
        otlMail.Display
     
        'Destruction des variables objet
        Set otlMail = Nothing
        Set otlApp = Nothing
    End Sub
    Bien à toi,

    Thibault

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en finance de marché
    Inscrit en
    Janvier 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant en finance de marché

    Informations forums :
    Inscription : Janvier 2017
    Messages : 40
    Par défaut
    Bonjour,

    je ferais une réponse globale pour voir si vos conseils ont fonctionner de mon coté. Sais tu comment je peux modifier mon message ?

    Je n'ai pas trouver dans l'interface et effectivement d'habitude j'envoie un fichier vide de toute info mais petit oubli de ma part, j'aimerais modifier ça pour être mettre un fichier anonyme.

    En te remerciant par avance d'avoir pris du temps pour m'aider.

  8. #8
    Membre averti
    Homme Profil pro
    Consultant en finance de marché
    Inscrit en
    Janvier 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant en finance de marché

    Informations forums :
    Inscription : Janvier 2017
    Messages : 40
    Par défaut Merci
    Bonjour à vous deux,

    merci pour vos retours et effectivement j'ai usé un peu des deux parties pour résoudre tous mes soucis.

    Il ne me reste plus qu'à résoudre ce problème de signature associé à un mail qui dispose d'une PJ.

    Je vais recréer un topic à ce sujet.

    Best regards

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

Discussions similaires

  1. probleme de recherche sur database access
    Par xweb-10 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/09/2009, 15h01
  2. {VBA Excel}Probleme sur macro mauvaise lecture de feuille excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 15h38
  3. Réponses: 15
    Dernier message: 13/03/2007, 17h25
  4. Probleme de date sur access
    Par DjBeGi dans le forum Access
    Réponses: 3
    Dernier message: 29/05/2006, 18h00
  5. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23

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