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

Access Discussion :

UserForm Excel ne s'ouvre pas à partir de MS Access


Sujet :

Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 146
    Par défaut UserForm Excel ne s'ouvre pas à partir de MS Access
    Bonjour,

    Je veux ouvrir un classeur Excel dans lequel il y a une macro qui ouvre un UserForm et ce à partir d'Access avec ce
    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
     
    Private Sub Commande2_Click()
        Dim xlApp As Object
        Dim xlWorkbook As Object
        Dim cheminFichier As String
     
        cheminFichier = "E:\Sauvegarde\Gaston\Access\2010\Vidéo\Graphiques\GraphFilmsActeur.xlsm"
     
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        Set xlWorkbook = xlApp.Workbooks.Open(cheminFichier)
     
        xlApp.Run "AfficherUserForm"
     
        Set xlWorkbook = Nothing
        Set xlApp = Nothing
    End Sub
    Macro dans Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub AfficherUserForm()
        UserForm1.Show
    End Sub
    Jusque là, tout fonctionnes parfaitement.
    Maintenant j'aimerais insérer le bout de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlApp.Run "Chemin!AfficherUserForm"
    dans mon code existant (d'Access).
    Il s'git d'un code pour ouvrir et exporter des données afin de créer un graphique :
    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
     
    Sub OuvrirGraphique(GraphName As String, GraphQuery As String, GraphTitle As String)
     
    Dim Chemin As String 'chemin complêt
    Dim xlAp As Object 'application Excel
    Dim xlWB As Object 'workbook
    Dim wbName As String 'nom du classeur
     
        wbName = GraphName & ".xlsm" 'Nom du classeur
     
        On Error Resume Next
        ' Essaye d'accéder à une instance d'Excel en cours
        Set xlAp = GetObject(, "Excel.Application")
     
        If err.Number <> 0 Then
            GoTo Suite
        End If
     
        On Error GoTo 0
     
        ' Vérifiez si le classeur est ouvert
        For Each xlWB In xlAp.Workbooks
            If xlWB.Name = wbName Then
                xlWB.Close SaveChanges:=False ' Ferme le classeur sans sauvegarder
                Exit For
            End If
        Next xlWB
     
    Suite:
        Chemin = CurrentProject.Path & "\Graphiques\" & wbName 'graphpath
     
        Set xlAp = CreateObject("Excel.Application")
        Set xlWB = xlAp.Workbooks.Open(Chemin)
     
        xlApp.Run "Chemin!AfficherUserForm" ' appel de la macro dans le classeur
     
        Call Export2XL(xlWB, GraphQuery, Chemin, "Tableau", "Graphique", GraphTitle)
     
        xlWB.Close SaveChanges:=True
        Set xlWB = Nothing
     
        xlAp.Quit
        Set xlAp = Nothing
     
        Call OuvrirFichierXLS(Chemin) 'ouvre le fichier sans rendre le focus au formulaire
     
    End Sub
    Contenu de Export2XL :
    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
     
    Function Export2XL(wb As Object, requete As String, Fichier As String, feuille As String, chart As String, TITRE As String)
     
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim ws As Object
        Dim ch As Object
        Dim l As Long
        Const xlup = -4162
     
        Set db = CurrentDb
        Set rs = db.OpenRecordset(requete)
        Set ws = wb.Sheets(feuille)
     
        ws.Cells.Clear
        ws.Cells(1, 1).CopyFromRecordset rs
     
        rs.Close
        Set rs = Nothing
     
        db.Close
        Set db = Nothing
     
        Set ch = wb.Charts(chart) 'graphique en tant que feuille de type graphique
        ch.Activate
     
        l = ws.Cells(ws.Columns(1).Cells.Count, 1).End(xlup).Row
        ws.Range("B1:B" & l).NumberFormat = "##" 'nombre standard sans décimales
     
        On Error Resume Next 'Ignore les erreurs qui pourraient se déclencher sur la ligne suivante
        ch.SetSourceData ws.Range("A1:B" & l), PlotBy:=xlcolumns
        On Error GoTo 0 'Réactive les messages d'erreur
     
        ch.ChartTitle.text = TITRE
     
        Set ch = Nothing
     
    End Function
    Là le UserForm ne s'ouvre pas, mais aucun message d'erreur est généré.
    La commande xlApp.Run "Chemin!AfficherUserForm" est-il bien placé dan la procédure "OuvrirGraphique" ?
    Si oui, où est l'erreur et si non, où faut-il la placer ?
    Pour info, le code pour exporter le graphique fonctionne parfaitement en dehors de ce problème d'affichage de UserForm.

    Merci d'avance de vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 581
    Billets dans le blog
    67
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 146
    Par défaut
    Bonjour et merci pour ta réaction User, mais je ne vois pas en quoi le lien que tu m'envoie puisse m'apporter une solution.
    Mon problème n'est pas de lancer une macro Excel à partir d'Access, mais de savoir où je dois l’insérer dans mon code existant.
    Le code pour ouvrir une macro, ainsi que le code d'exportation fonctionnent très bien séparément !

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 581
    Billets dans le blog
    67
    Par défaut
    Quand vous exécutez la macro il faut lui donner le nom du classeur une fois ouvert comme indiqué dans le lien et pas chemin!nommacro..
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 146
    Par défaut
    Dans le "Sub Commande2_Click()" :

    xlApp.Run "AfficherUserForm" fonctionne.
    xlApp.Run "'GraphFilmsActeur.xlsm'!AfficherUserForm" fonctionne.
    xlApp.Run "Chemin!AfficherUserForm" en effet, ne fonctionne pas. Je ne l'avais pas testé dans ce Sub.

    Mais dans le "OuvrirGraphique(GraphName As String, GraphQuery As String, GraphTitle As String)" :

    xlApp.Run "AfficherUserForm" ne fonctionne pas.
    xlApp.Run "'GraphFilmsActeur.xlsm'!AfficherUserForm" ne fonctionne pas.
    xlApp.Run "Chemin!AfficherUserForm" bien sûr, ne fonctionne pas.

    Il y a donc autre chose qui cloche...

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 581
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par Gaston62 Voir le message
    ....

    Mais dans le "OuvrirGraphique(GraphName As String, GraphQuery As String, GraphTitle As String)" :

    xlApp.Run "AfficherUserForm" ne fonctionne pas.
    xlApp.Run "'GraphFilmsActeur.xlsm'!AfficherUserForm" ne fonctionne pas.
    xlApp.Run "Chemin!AfficherUserForm" bien sûr, ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set xlAp = CreateObject("Excel.Application")
    Set xlWB = xlAp.Workbooks.Open(Chemin)
     
    xlAp.Run "'GraphFilmsActeur.xlsm'!AfficherUserForm"
    xlAp et non xlApp..
    après je connais pas le nom exact de votre classeur
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 146
    Par défaut
    Exacte, petite erreur de ma part.
    Il fallait mettre xlAp et non xlApp.
    J'avais écrit xlApp dans mon test et j'ai bêtement copié la ligne dans mon code final.
    Maintenant ça marche parfaitement.

    Merci pour ton aide et bonne soirée !

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 581
    Billets dans le blog
    67
    Par défaut
    Pas de soucis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. [XL-365] Lien dans un e-mail Outlook envoyé par Excel ne s'ouvre pas
    Par Menalm11 dans le forum Excel
    Réponses: 1
    Dernier message: 21/06/2021, 12h44
  2. VBS : ShellExecute fichier Excel ne s'ouvre pas
    Par cerede2000 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 26/01/2017, 09h32
  3. Fichier excel ne s'ouvre pas a cause vba
    Par rodex001 dans le forum Excel
    Réponses: 8
    Dernier message: 17/03/2015, 14h08
  4. [Access 2007] Fichier excel qui ne s'ouvre pas
    Par enkie dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/08/2008, 10h08
  5. [C#] [Excel] Feuille qui s'ouvre pas...
    Par lololefada dans le forum Windows Forms
    Réponses: 7
    Dernier message: 15/07/2004, 14h45

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