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 Outlook Discussion :

Lancer un appel depuis un formulaire d'Access


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Lancer un appel depuis un formulaire d'Access
    Bonjour,

    Cela fait des mois que je poirote pour trouver une solution à ce problème dans Access 2007.

    J'ai un téléphone IP AVAYA. Tel que dans Outlook, je voudrais pouvoir, depuis un formulaire Access, lancer un appel vers un numéro de téléphone qui se trouve dans un champ de mon formulaire. Et ceci sans avoir une cascade de fenêtre (Dialer de Windows ), mais quelque chose de plus élégant comme le dialer d'Outlook qui actuellement marche bien.

    J'ai parcouru des tas de forums, lu des tonnes d'articles, testé des librairies tapi.dll sans jamais réussir à rien faire vibrer mon téléphone .

    Je n'arrive pas à trouver le petit truc qui fait que ça ne marche pas, contrairement à ce que les auteur de certains articles sur des forums semblent croire.

    1- Comment transférer un numéro depuis une champ d'un formulaire Access vers le combiné ?
    2- Ai-je besoin de librairies supplémentaires et si oui, lesquels ?
    3- Comment avoir une boite de Dialogue comme celle d'Outllook Nom : Boite de Dialogue.png
Affichages : 712
Taille : 27,0 Ko et non la cascade de fenêtres du Dialer de Windows ?

    Merci infiniment pour toute aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    Manipuler Outlook depuis Access se nomme Automation. Même si tes appels Outlook se font dans Access il s'agit toujours d'Outlook. Tu auras donc plus de chance d'avoir des réponses dans cette rubrique.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    Voici 2 solutions à partir des contacts outlook
    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
    Sub call_phone_exp()
        Dim objExp As Explorer, colCB, objCBB
        'A partir de l'explorateur dans les contacts
        Set objExp = ActiveExplorer
        Set colCB = objExp.CommandBars
        If Not objExp Is Nothing And objExp.CurrentFolder.DefaultItemType = olContactItem Then
            objExp.CommandBars.ExecuteMso ("Call")
        End If
    End sub
     
    Sub call_phone_contact()
        Dim  colCB, objCBB
        'A partir d'1 contact
        Dim objInsp As Inspector
        Set objInsp = ActiveInspector
        Set colCB = objInsp.CommandBars
        If Not objInsp Is Nothing And objInsp.CurrentItem.Class = olContact Then
            objInsp.CommandBars.ExecuteMso ("Call")
        End If
     
    End Sub

    Si ton contact n'existe pas tu peux le créer (du moins temporairement)

    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
     
     
    Sub call_phone_contact()
        Dim colCB, objCBB
        'A partir d'1 contact
        Dim objInsp As Inspector
        Set objInsp = ActiveInspector
        Set colCB = objInsp.CommandBars
        If Not objInsp Is Nothing And objInsp.CurrentItem.Class = olContact Then
            objInsp.CommandBars.ExecuteMso ("Call")
        End If
     
    End Sub
     
     
    Sub appel_contact()
    Dim mycontact As ContactItem
        Set mycontact = Application.CreateItem(olContactItem)
        mycontact.BusinessTelephoneNumber = "0123456789"
        mycontact.Display
        call_phone_contact
        mycontact.Close olDiscard
    End Sub

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci loufab et Oliv-.

    J'ai essayé la solution de Oliv- sans succès.
    Je vais me pencher sur les automations tel que proposé par loufab.

    Cordialement.

  5. #5
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Si tu utilises à partir de ACCESS il faut adapter le code pour l'automation.

    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
     
     public olapp as object
     
    Sub call_phone_contact()
    Const olContact = 40
        Dim colCB, objCBB
        'A partir d'1 contact
     
        Dim objInsp As Inspector
        Set objInsp = olapp.ActiveInspector
        Set colCB = objInsp.CommandBars
        If Not objInsp Is Nothing And objInsp.CurrentItem.Class = olContact Then
            objInsp.CommandBars.ExecuteMso ("Call")
        End If
     
    End Sub
     
     
    Sub appel_contact()
    set olapp =createobject("outlook.application")
     
    Dim mycontact As ContactItem
        Set mycontact = olapp.CreateItem(2) 'olContactItem
        mycontact.BusinessTelephoneNumber = "0123456789"
        mycontact.Display
        call_phone_contact
        mycontact.Close olDiscard
    End Sub

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Je n'arrive pas à croire que ça marche.
    Mille merci Oliv-. Ton code marche à merveille.
    J'ai même pu afficher le nom du destinataire à partir d'un champ aussi.

    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
     
    Option Compare Database
    Option Explicit
     
     
    Public olapp As Object
     
    Sub call_phone_contact()
    Const olContact = 40
        Dim colCB, objCBB
        'A partir d'1 contact
     
        Dim objInsp As Inspector
        Set objInsp = olapp.ActiveInspector
        Set colCB = objInsp.CommandBars
        If Not objInsp Is Nothing And objInsp.CurrentItem.Class = olContact Then
            objInsp.CommandBars.ExecuteMso ("Call")
        End If
     
    End Sub
     
     
    Private Sub Phone_Click()
    Set olapp = CreateObject("outlook.application")
     
    Dim mycontact As ContactItem
        Set mycontact = olapp.CreateItem(2) 'olContactItem
        mycontact.FirstName = "Destinataire"
        mycontact.BusinessTelephoneNumber = TelNumber
        mycontact.Display
        Call call_phone_contact
        mycontact.Close olDiscard
    End Sub
    Merci infiniment pour votre aide.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je rouvre cette discussion avec un nouveau problème après une migration vers Office 2010 64 bits, la solution ci-dessus renvoie une erreur [La méthode 'CommandBars' de l'objet '_Inspector' a échoué] à la ligne :

    [15]Set colCB = objInsp.CommandBars
    [17]objInsp.CommandBars.ExecuteMso ("Call")



    Merci de pour toute aide pour contourner ce problème.

    -David

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut,
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.CommandBars.ExecuteMso ("Call")

  9. #9
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Bonjour Oliv,

    J'ai apporté la modification suivante et j'ai toujours une erreur à la ligne [18 Application.CommandBars.ExecuteMso ("Call")].
    Erreur : Argument ou appel de procédure incorrect
    Cette modification me semble tout de même curieux car c'est la commandBar de Outlook que je veux appeler depuis access et non pas celui de Access...

    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
     
    Option Compare Database
    Option Explicit
     
     
    Public olapp As Object
     
    Sub call_phone_contact()
        Const olContact = 40
        Dim colCB, objCBB
        'A partir d'1 contact
     
        Dim objInsp As Inspector
        Set objInsp = olapp.ActiveInspector
        'Set colCB = objInsp.CommandBars
        If Not objInsp Is Nothing And objInsp.CurrentItem.Class = olContact Then
            'objInsp.CommandBars.ExecuteMso ("Call")
            Application.CommandBars.ExecuteMso ("Call")
        End If
     
    End Sub
     
     
    Private Sub Commande2_Click()
        Set olapp = CreateObject("outlook.application")
     
        Dim mycontact As ContactItem
        Set mycontact = olapp.CreateItem(2) 'olContactItem
        mycontact.FirstName = "Destinataire"
        mycontact.BusinessTelephoneNumber = TelNumber
        mycontact.Display
        Call call_phone_contact
        mycontact.Close olDiscard
    End Sub

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    oui comme tu utilises cela à partir de accès il faut adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    olapp.CommandBars.ExecuteMso ("Call")
    est ce que cela fait ça uniquement sur un pC ? si oui c'est peut être un pb d'installation de office.

  11. #11
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J'ai ce problème sur plusieurs PC (plus de 5). En fait tous ceux sur lesquels ce module marchaient avant la migration.
    Il se pourrait que la nouvelle version d'office 2010 64 bits utilise les Ribbons et non plus les CommandBars. Je pense que l'erreur vient de cela.

    Je viens de trouver ce lien qui peut être intéressant. Je l'ai testé après avoir fait toutes les adaptations, mais rien ne se passe : pas d'erreur, ni appel ...
    Je vais approfondir un peu pour voir : http://accessindepth.blogspot.fr/201...utodialer.html

  12. #12
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    salut
    dans vbe as tu bien une REFERENCE à "Microsoft OFFICE 1x.x object library" ?

  13. #13
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Parmi les réfénces VBA, j'ai bien une référence Microsoft Office 15.0 object library.
    Mais si j'essaye de la cocher, je reçois le message : "Erreur de chargement de la dll".
    Hm hm ...

  14. #14
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Essaye de réparer l'installation de OFFICE , si les pc sont déployés par clonage c'est possible de trouver ce problème sur plusieurs postes.

  15. #15
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Je vois. C'est très probable que les PC soient installés en clonage et cela est géré par le service technique prendra quelques temps à résoudre ce problème.
    Cependant, je viens de trouver ce lien hyper intéressant.
    J'ai essayer vite fait de le mettre en place, mais je ne reçois rien : ni appel, ni message d'erreur; toutes les instructions sont exécutées sans que rien ne se passe.
    Je vais encore gratter un peu pour voir ce qu'il en sort.

    BàV,

    David.

  16. #16
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    La réparation est des fois possible directement
    https://support.office.com/fr-ch/art...rs=fr-CH&ad=CH

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par fonkwe Voir le message
    Parmi les réfénces VBA, j'ai bien une référence Microsoft Office 15.0 object library.
    Mais si j'essaye de la cocher, je reçois le message : "Erreur de chargement de la dll".
    Hm hm ...
    Si tu utilises, office 2010 tu ne devrais pas avoir "Microsoft Office 15.0 object library" mais "Microsoft Office 14.0 object library"

    essaye de le pointer manuellement en faisant parcourir dans la fenêtre REFERENCES
    il doit être là :C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\mso.dll

  18. #18
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Bonjour Oliv

    J’avais bien ceci Nom : Image1.png
Affichages : 567
Taille : 38,0 Ko et on remarque que le chemin de la librairie est très improbable.

    J'ai pointé directement sur C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\mso.dll tel que recommandé Nom : Image2.png
Affichages : 532
Taille : 25,9 Ko et c'est bien "Microsoft Office 14.0 object library" qui est chargée

    Mais si je relance ma macro, j’obtiens la même erreur initiale ci-jointe Nom : Image3.png
Affichages : 544
Taille : 21,2 Ko.

    Merci pour toute l'aide que tu m'apportes.

    David

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    David,
    As tu essayé de voir si tu avais accès au panneau de configuration et désinstaller un programme , pour faire réparer ?

    Sinon essaye à partir d'excel, ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test_mso()
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
    End Sub

  20. #20
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Essaye plutot à partir d'une base ACCESS (autre) dans une table par exemple, parce que Excel a un objet commandbars

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test_mso()
    Application.CommandBars.ExecuteMso ("FilePrintPreview")
    End Sub

Discussions similaires

  1. [XL-2007] Lancer une requête depuis un formulaire
    Par puledro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/11/2013, 14h25
  2. [AC-2000] Lancer une application depuis un formulaire
    Par grommerch dans le forum VBA Access
    Réponses: 12
    Dernier message: 01/12/2009, 16h57
  3. lancer requête SQL depuis formulaire access
    Par Zavonen dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/10/2007, 19h43
  4. Appel d'un Formulaire depuis un autre classeur
    Par philmonnery dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/07/2006, 11h03
  5. Net Send depuis un Formulaire Access
    Par Herlece dans le forum IHM
    Réponses: 1
    Dernier message: 05/06/2006, 13h23

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