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 :

Ouvrir un document en cliquant sur un bouton de commande


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut Ouvrir un document en cliquant sur un bouton de commande
    Bonjour à tous,

    Ma question ne posera sûrement aucun problème aux experts que vous êtes mais à moi elle m'en pose énormément... cela me semblait pourtant si simple...

    Je travaille sur une base de donnée sur laquelle je dois faire plein de liens pour ouvrir des documents extérieurs à la base de donnée : un classeur excel, un répertoire téléphonique sous word...

    J'ai donc créer un bouton de commande (Commande36) et ait exécuté l'assistant en choisissant l'action "exécuter une application", puis en parcourant mes documents et en choisissant celui que je voulais (a savoir un document excel : Suivi RDV stagiaires)... ca ne marche pas... ("Argument ou appel de procédure incorrect") voilà le code que ça m'a donné :

    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
    Private Sub Commande36_Click()
    On Error GoTo Err_Commande36_Click
     
        Dim stAppName As String
     
        stAppName = "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls"
        Call Shell(stAppName, 1)
     
    Exit_Commande36_Click:
        Exit Sub
     
    Err_Commande36_Click:
        MsgBox Err.Description
        Resume Exit_Commande36_Click
     
    End Sub
    mais aucune ligne de ce code n'est apparue comme erreur...

    Donc j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande36_Click()
    On Error GoTo Err_Commande36_Click
    
        Dim objDoc As Object
        Set objDoc = Application.Documents.Open("C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls")
        
        
    End Sub
    mais ça marche pas...
    Si quelqu'un peut m'aider... et m'expliquer quelle sera la méthode que je devrai suivre par la suite pour que je puisse ouvrir ce que je veux à partir de boutons de commande, d'étiquettes de texte....

    Merci d'avance, j'avais trouvé, me semble-t'il, la solution dans la FAQ et sur Internet, mais vraiment je ne comprends rien aux explications... trop novice (voir très nul...) en Vba pour ça ...

    Encore merci d'avance à tous ceux qui voudront bien m'aider...

  2. #2
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Logiquement le premier code devrait fonctionner.
    Quel est le message d'erreur affiché?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Danjos Voir le message
    Logiquement le premier code devrait fonctionner.
    Quel est le message d'erreur affiché?
    ca me dit :"Argument ou appel de procédure incorrect" mais sans me surligner aucune ligne de mon code vba...

    merci d'avance !!

  4. #4
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Vérifie si le fichier en question est accessible.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Danjos Voir le message
    Vérifie si le fichier en question est accessible.

    Oui, il l'est.

    Cependant, il s'ouvre automatiquement avec OpenOffice, je sais pas pourquoi, mais bon, c'est le format que je veux openoffice parce que la société pour laquelle je travaille n'a pas excel, word...

    Est-ce parceque ça s'ouvre avec openoffice que ca ne marche pas??

  6. #6
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Cela n'a rien avoir avec le logiciel qui ouvre. L'application qui ouvre est lié à l'extension du fichier. Openoffice ouvre les .xls et c'est suffisant.

    Mais là je ne vois pas vraiment d'où viendrait le problème. Essaie de faire de petites recherches sur la syntaxe de

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Danjos Voir le message
    Cela n'a rien avoir avec le logiciel qui ouvre. L'application qui ouvre est lié à l'extension du fichier. Openoffice ouvre les .xls et c'est suffisant.

    Mais là je ne vois pas vraiment d'où viendrait le problème. Essaie de faire de petites recherches sur la syntaxe de
    Je vois pas du tout...

    Merci quand même, c'est gentil d'avoir essayer...

    Si quelqu'un a la solution ou bien si quelqu'un a une idée plus simple pour ouvrir un objet (style : DoCmd.OpenObject... ou un truc comme ça avec la syntaxe précise car j'ai beaucoup de lacune en Vba...)

    merci d'avance...

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Regarde ici... 11ème lien : comment ouvrir un fichier HTML, Word...

    Domi2

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Bonjour,

    Regarde ici... 11ème lien : comment ouvrir un fichier HTML, Word...

    Domi2
    Merci bien. Voilà ce qu'il y a :

    Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'exécutable associé ? [haut]

    auteur : Romain Puyfoulhoux
    Placez cette déclaration dans le module d'une form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Hum... a pas compris du tout ce code... Quelqu'un peut-il me l'expliquer (si c'est le bon évidemment...)

    Merci d'avance !!

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Oui, c'est bien celui-ci...

    Tu places le code que tu as posté dans la section déclaration d'un module, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
    Option explicit
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Utilise de préférence un module standard, et déclare ta fonction comme Public
    si tu dois y faire appel depuis divers endroits de ton application.

    Et pour appeler la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1
    Domi2

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Bonjour,

    Oui, c'est bien celui-ci...

    Tu places le code que tu as posté dans la section déclaration d'un module, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
    Option explicit
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Utilise de préférence un module standard, et déclare ta fonction comme Public
    si tu dois y faire appel depuis divers endroits de ton application.

    Et pour appeler la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1
    Domi2
    Juste pour confirmation : je crée un module dans Access avec le 1er code que tu m'as donné. Ensuite je vais dans la procédure évennementielle de mon bouton de commande et je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande37_Click()
     
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1
    c'est bien cela?? ou alors dois-je rajouter DoCmd. devant ShellExecute... ??

    Merci !!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Bon apparemment il faut pas faire ce que je viens de dire...

    J'en fais quoi du module que je viens de créer??
    Comment le mettre dans ma Comande37_Click???

  13. #13
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Juste pour confirmation : je crée un module dans Access avec le 1er code que tu m'as donné. Ensuite je vais dans la procédure évennementielle de mon bouton de commande et je tape :


    Code :
    Private Sub Commande37_Click()

    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1c'est bien cela?? ou alors dois-je rajouter DoCmd. devant ShellExecute... ??
    Oui, c'est correct. Pas de DoCmd.

    Juste pour confirmation : je crée un module dans Access avec le 1er code que tu m'as donné. Ensuite je vais dans la procédure évennementielle de mon bouton de commande et je tape :
    C'est également correct. Mais comme tu as créé un module standard, il faut modifier (changer) Private par Public.

    Domi2

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Vraiment désolée, je dois vraiment être nulle...

    Je suis allée dans l'onglet Modules de ma base de donnée et ai cliqué sur "Nouveau". J'ai ainsi créé un module que j'ai appelé "OuvertureDocument". Voilà son Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Compare Database
     
    Option Explicit
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Je n'ai pas inséré de procédure, c'est là la totalité de ce qu'il y a dans mon module OuvertureDocument !

    Ensuite je suis allée sur ma Commande37 et voilà la procédure évennementielle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Commande37_Click()
     
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1
     
     
    End Sub
    Et lorsque je clique sur mon bouton de commande, ça me dit : Erreur de compilation : Sub ou Function non définie

    Que faire??? Vraiment merci pour vos conseils, je réalise le temps que je vous fait sûrement perdre... un jour je ne serai plus aussi débutante !! j'espère...

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Je crois que je sais...

    Dans le code suivant, il faut remplacer Private par Public, non??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Compare Database
     
    Option Explicit
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Je vais voir si c'est ça, mais je pense que c'est ce que tu voulais me dire en m'indiquant de modifier... pitié que ce soit ça !!

  16. #16
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Sorry, c'est de ma faute, j'aurais dû être plus précis...

    Effectivement, c'est bien la fonction que tu dois déclarer comme Public

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function ShellExecute
    Et la procédure de ton bouton doit rester Private

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande37_Click()
     
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\Suivi RDV stagiaires.xls", "", CurrentProject.Path, 1
     
    End Sub
    Domi2

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 56
    Points : 36
    Points
    36
    Par défaut VOICI LA SOLUTION !!!
    Tout d'abord un grand merci à Domi2 car sans lui je n'aurai jamais compris, et merci pour la GRANDE patience dont il a fait preuve avec moi...
    Merci aussi à Danjos qui a essayé de m'aider !!! C'est le geste qui compte.

    Domi2 a donné la solution de suite, je vais résumer et peut être que ce sera plus facile pour des débutants de mon niveau (s'il existe un niveau... )

    Donc, pour ouvrir des documents (word, excels, pdf...) à partir d'un Bouton de Commande :

    1. Créez le Module suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Compare Database
     
    Option Explicit
     
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    C'est là la totalité du code du module, n'écrivez rien d'autre. Nommez le comme vous voulez, moi je l'ai appelé "OuvertureDocument"

    2. Rendez-vous dans les propriétés de votre Bouton de Commande (je l'ai (pas)appelé Commande37) et dans l'onglet Evenement, choisissez "Sur clic" et créez une procédure évennementielle (ou "générer un code" si vous préférez, c la même chose...).
    Et le code de votre bouton sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Commande37_Click()
     
    ShellExecute Me.hwnd, "open", "C:\Documents and Settings\CASTELLANI\Mes documents\listing.odt", "", CurrentProject.Path, 1
     
     
    End Sub
    N'oubliez pas de déclarer votre procédure en Public !!! Access le fait automatiquement en Private...
    "C:\Documents and Settings\CASTELLANI\Mes documents\ : ça correspond au chemin d'accès du doc que vous désirez ouvrir (pour le connaître : clic droit sur le doc, Propriété et emplacement)
    listing : c'est le nom de votre document
    .odt : c'est l'extension, le format de votre doc (.xls pour un doc Excel, .doc pour un doc word, .odt pour un doc openoffice writer...)

    Voili, voilou C'est tout !!

    Encore un grand merci aux personnes qui m'ont aidée, m'aident, et m'aideront sûrement encore...

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

Discussions similaires

  1. [XL-2007] ouvrir document en cliquant sur un bouton
    Par fartouk dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2010, 21h36
  2. Ouvrir une fenêtre en cliquant sur un bouton
    Par Versace31 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 10/02/2009, 21h43
  3. Ouvrir un document en cliquant sur un bouton
    Par agentmob dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/04/2008, 00h44
  4. ouvrir un fichier en cliquant sur un bouton
    Par harris_macken dans le forum Interfaces Graphiques en Java
    Réponses: 13
    Dernier message: 28/03/2008, 22h03
  5. Réponses: 5
    Dernier message: 18/10/2005, 20h55

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