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 Excel a partir de VBA access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Par défaut Ouvrir Excel a partir de VBA access
    Je tente d'ouvrir un workbook a partir d'un bouton dans access en utilisant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim objExcel As Object
     
       Set objExcel = CreateObject("Excel.Application")
       objExcel.Workbooks.Open ("E:\DB\Outil\Demande de credit.xlsm")
       objExcel.Visible = True
       objExcel.UserControl = True
       Set objExcel = Nothing
    Ce qui fonctionne très bien. Cependant il ouvre un nouveau Excel à chaque fois au lieu d'ouvrir seulement un workbook dans le excel déjà ouvert. Alors lorsque j'utilise mon bouton dans mon chiffrier pour fermer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Application.ActivateMicrosoftApp xlMicrosoftAccess
    Application.DisplayAlerts = False
    ThisWorkbook.Close savechanges:=False
    Application.DisplayAlerts = True
    je peux me retrouver avec plusieurs fenetre excel ouverte sans aucun workbook...
    J'ai tenté d'utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Application.ActivateMicrosoftApp xlMicrosoftAccess
    Application.DisplayAlerts = False
    Application.Quit
    cependant si j'ouvre mon ficher "demande de crédit" a partir d'access et que j'ouvre un autre chiffrier par moi même ou crée un nouveau, lorsque je roule la fonction, tout se ferme sans sauvegarder...

    Bref j'ai besoin d'un code qui va vérifier si j'ai un excel déjà ouvert (sans nom précis, mais simplement l'application excel), si un excel est déjà en cour, on ouvre un nouveau workbook dans celui-ci, sinon createobject et on en fait un nouveau.. .

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    voici un exemple pour ne pas faire proliférer les processus excel.exe :
    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
    Sub Exemple()
    Dim objExcel As Object, bXLcreated As Boolean
       On Error GoTo ErrH
     
       ' Obtenir une instance d'Excel
       Set objExcel = GetObject(, "Excel.Application")
       ' Si aucune, créer une nouvelle instance d'Excel
       If objExcel Is Nothing Then
          Set objExcel = CreateObject("Excel.Application")
          bXLcreated = True
       End If
       objExcel.Workbooks.Open ("E:\DB\Outil\Demande de credit.xlsm")
       ' Si nouvelle instance d'Excel
       If bXLcreated Then
          objExcel.Visible = True
          objExcel.UserControl = True
       End If
     
    Sortie:
       Set objExcel = Nothing
       Exit Sub
     
    ErrH:
       Select Case Err.Number
           ' Erreur levée par GetObject
           Case 429 ' Un composant ActiveX ne peut pas créer d'objet
               Resume Next
       End Select
       MsgBox Err.Description, , "Erreur No. " & Err.Number
       Resume Sortie
    End Sub
    On essaie d'abord GetObject, et si ça échoue, alors on utilise CreateObject.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Par défaut
    Un gros merci ca fonctionne à merveille!

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

Discussions similaires

  1. dupliquer feuille dans un classeur excel a partir de VBA access
    Par unlucky luke dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2015, 22h10
  2. [AC-2002] ouvrir excel a partir d'access
    Par marmatqat dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/10/2009, 11h27
  3. Activer un menu Excel depuis un programme VBA Access
    Par gbuxo dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/11/2007, 10h58
  4. Ouvrir un fichier word avec VBA Access
    Par alainb dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/10/2007, 21h57

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