Bonjour,
Je recherche une solution pour éviter que l'instance EXCEL ouverte par ACCESS ne soit utilisée par l'ouverture d'un classeur quelconque lorsque l'on clique sur le fichier dans l'explorateur Windows![]()
Bonjour,
Je recherche une solution pour éviter que l'instance EXCEL ouverte par ACCESS ne soit utilisée par l'ouverture d'un classeur quelconque lorsque l'on clique sur le fichier dans l'explorateur Windows![]()
salut,
peut-être en fermant l'application excel créée en fin de procédure...![]()
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Tout à fait d'accord![]()
Le problème est que le traitement est assez long et que l'utilisateur désire travailler en parallèle sur d'autre tâche...
Donc ma demande concerne le moment où l'instance Excel est en plein traitement à partir d'Access.
Une solution de secours, assez contraignante, est que l'utilisateur ouvre lui-même Excel et son fichier par le menu ouvrir... Peu souple pour l'utilisateur![]()
ou alors, tu lances ton application excel en visible = false...
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Je travaille essentiellement en arrière plan...
Mais lorsque l'on ouvre un fichier Excel en cliquant sur le fichier dans l'explorateur, Windows controle si une instance Excel est en cours...
Comme c'est le cas, il ouvre le fichier dans cette instance
Je voudrais donc qu'il ne concidère pas cette intance ouverte pas Access comme utilisable
dans mes applis, l'ordi est dédié aux batch, donc de toute facon personne n'ouvre de fichiers dessus.
Le traitement est long ?
Si oui, pense à voir la possibilité d'avoir une machine dédiée
Sinon, ton utilisateur peut-il se passer d'excel durant le traitement ?
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Euh... ca va pas être possible...
J'vais donner plus de détail sur l'environnement:
L'application Access sert pour des extractions sur Excel en fonction de critères que l'utilisateur sélectionnent
Une fois la demande d'extraction réalisée, l'application créer une instance Excel où les données de la base y sont placés et la mise en page réalisée.
Le traitement peut durée une dizaine de minutes...
Donc pendant ce temps l'utilisateur peut aller boire un café... Le problème c'est qu'il peut avoir à réaliser une dizaine d'extraction dans la journée...
A la fin de la journée, on ne tiendra plus l'utilisateur qui sera en overdose de caféïne...
Pour illustrer le problème, voici un petit bout de code qui permet de vous mettre en situation
Une fois ce code copié dans un module d'une nouvelle base (dont la référence Excel y sera activé)
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 Sub Test() Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlSh As Excel.Worksheet Dim I As Long Set xlApp = CreateObject("Excel.Application") Set xlWb = xlApp.Workbooks.Add Set xlSh = xlWb.Worksheets(1) For I = 1 To 15000 xlSh.Cells(1, 1) = I Next xlWb.Close Savechanges:=False xlApp.Quit Set xlSh = Nothing Set xlWb = Nothing Set xlApp = Nothing End Sub
Ouvrir l'explorateur Windows pour trouver un fichier Excel à ouvrir pendant le test.
Lancer le bout de code dans la base (temps d'éxécution 10s environ), ouvrir le fichier Excel dans l'explorateur, puis le fermer aussitôt...
Et vous voilà avec une belle erreur dans Access car vous venez de fermer l'instance qu'il avait ouvert pour son traitement...![]()
Après plusieurs recherches infructueuses, la persévérance a apporté ces fruits
La réponse à ma question est la commande IgnoreRemoteRequests
Ainsi les requêtes DDE hors programme sont ignorées.
Voici comment je l'ai utilisée
Voila pour info, si cela peut servir à d'autres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlSh As Excel.Worksheet Dim I As Long Set xlApp = CreateObject("Excel.Application") xlApp.IgnoreRemoteRequests = True Set xlWb = xlApp.Workbooks.Add ...![]()
Partager