Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 19h09   #1
Candidat au titre de Membre du Club
 
Francois Renaud
Inscription : novembre 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Francois Renaud

Informations forums :
Inscription : novembre 2010
Messages : 23
Points : 12
Points : 12
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 :
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 :
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 :
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
Rashlack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 20h19   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
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 : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

voici un exemple pour ne pas faire proliférer les processus excel.exe :
Code :
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+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 21h05   #3
Candidat au titre de Membre du Club
 
Francois Renaud
Inscription : novembre 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Francois Renaud

Informations forums :
Inscription : novembre 2010
Messages : 23
Points : 12
Points : 12
Un gros merci ca fonctionne à merveille!
Rashlack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h06.


 
 
 
 
Partenaires

Hébergement Web