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

Macros et VBA Excel Discussion :

Meeting Request depuis Excel sans utiliser les References [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Points : 36
    Points
    36
    Par défaut Meeting Request depuis Excel sans utiliser les References
    Bonjour à tous,

    Je dois pouvoir envoyer des mails et des Meeting Request depuis un fichier excel partagé qui va être utilisé par des utilisateurs d'Office 2003, 2007 et 2010.

    Pour éviter le problème de "changement de référence -Microsoft Outlook 1x.0-) j'ai codé un utilisant des objets mais j'ai un problème avec les Meeting Request. Le code ci-dessous fonctionne correctement si j'active la Référence Microsoft Outlook mais je veux que le code fonctionne aussi sans cette référence activé. Ca fait quelques jours que je tourne au tour du pot et je n'arrive pas à trouver la solution.
    L'erreur survient à l'auteur de la ligne "RequiredAttendees".
    Merci de votre aide.

    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
    Sub Test()
        Dim olApplication As Object
        Dim olAppointment As Object
     
        Set olApplication = CreateObject("Outlook.Application")
        Set olAppointment = olApplication.CreateItem(olAppointmentItem)
     
        With olAppointment
            .RequiredAttendees = "toto@mail.fr"
            .Subject = "Test Meeting Request"
            .Importance = 2
            .Start = "18/06/2012" & " 8:30"
            .Location = "Dans mon bureau"
            .Body = "Test"
            .MeetingStatus = 1
            .ResponseRequested = True
            .Send
        End With
     
        Set olApplication = Nothing
        Set olAppointment = Nothing
    End Sub

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    J'ai déjà rencontré ce problème que j'avais contourné en cochant la référence Outlook. Si tu ne le fais pas, "olAppointment" est un mailitem alors que, si la référence est cochée, "olAppointment" est bien un appointmentitem comme tu peux le voir dans la fenêtre des variables locales. A ta place, je listerais les références (cochées) des différentes versions d'Excel et dans ton appli, ja testerai la version pour ajouter la bonne référence :

    1. liste des références sur la première feuille du classeur :

    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
    Sub ListReferencePaths()
         'Macro purpose:  To determine full path and Globally Unique Identifier (GUID)
         'to each referenced library.  Select the reference in the Tools\References
         'window, then run this code to get the information on the reference's library
     
        On Error Resume Next
        Dim i As Long
        With ThisWorkbook.Sheets(1)
            .Cells.Clear
            .Range("A1") = "Reference name"
            .Range("B1") = "Full path to reference"
            .Range("C1") = "Reference GUID"
            .[D1] = "Majeur"
            .[E1] = "Mineur"
        End With
        For i = 1 To ThisWorkbook.VBProject.References.Count
            With ThisWorkbook.VBProject.References(i)
                ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) = .Name
                ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 1) = .FullPath
                ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 2) = .GUID
                ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 3) = .Major
                ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 4) = .Minor
            End With
        Next i
        On Error GoTo 0
    End Sub
    2. Ajout d'une référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub AjoutReference()
    ActiveWorkbook.VBProject.References.AddFromGuid "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pas besoin de cocher une référence.

    olAppointmentItem est une constante liée à OutLook, celle-ci a une valeur que l'on peut retrouver dans l'explorateur d'objet (F2) de l'éditeur VB.

    Il y a donc deux solutions :

    • Remplacer la constante pas sa valeur.
    • Recrée dans un module la constante avec la valeur.

    Personnellement, la deuxième solution est celle que j'utilise.

    Le fait de cocher une référence te lis à la version, donc des soucis de portabilité.

    Philippe

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Super !
    J'ai essayé avec la méthode 1; par contre, je n'ai pas compris le 2. Est-ce que tu peux expliquer davantage ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Un exemple sera plus parlant :

    J'utilise un complément Access (c'est le même problème sous Excel) qui permet entre autre d'envoyer un tableau par OutLook qui est le résultat d'une analyse d'un fichier.

    Donc dans mon code j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ObjMail = AppOutLook.CreateItem(olMailItem)
    Hors, le complément tourne sur des postes avec Access 2000 et 2002, donc impossible de référencer OutLook.

    Tu te doutes bien que sans référencer OutLook la ligne bug, car il ne connait pas la constante olMailItem

    Donc dans un module je déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const olMailItem As Long = 0
    Ainsi ma constante est reconnue et le code est plus parlant.

    En résumant :

    Je développe en cochant la référence et je déclare les objets comme des objets OutLook.
    Avant de distribuer, je décoche la référence, et les objets OutLook sont déclarés comme des objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public AppOutLook As Object
    Public ObjMail As Object
    Ensuite je déclare les constante en Public avec leur valeur que je récupère dans l'explorateur d'objet et tout est reconnu.

    De plus le nom de la constante est plus parlant que sa valeur.

    Philippe

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    De plus le nom de la constante est plus parlant que sa valeur.
    C'est le seul intérêt par rapport à la solution 1 ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    C'est le seul intérêt par rapport à la solution 1 ?
    Pour moi, c'est un intérêt énorme lorsque l'on veut débugger un programme et lors de la conception de celui-ci.

    Philippe

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Merci.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Merci de votre aide. Ça marche !

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

Discussions similaires

  1. [VBA EXCEL]comment utiliser les boites a outils control sur une feuille excel
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/02/2007, 19h04
  2. Inclure un fichier externe sans utiliser les frames
    Par gazza dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/07/2006, 08h52
  3. Réponses: 9
    Dernier message: 01/07/2006, 20h04
  4. Decompression d'un fichier sans utiliser les modules du CPAN
    Par choubiroute dans le forum Modules
    Réponses: 6
    Dernier message: 10/03/2006, 14h20

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