Bonjour,
J'ai utilisé un bout de code pour mettre sous forme de tableau une plage de données dans une feuille excel que j'ouvre depuis Access 2007. ça fonctionne correctement lorsque je ne l'utilise qu'une seule fois mais si je relance la fonction je me retrouve avec un ou deux message d'erreur comme celui là:
erreur 462 : le serveur distant n'existe pas ou n'est pas disponible.
A priori j'ai trouvé dans un autre fil de discussion la raison c'est que j'appelle mal mon instance Excel et/ou que je dois mettre des xl. devant mes objets. j'ai essayé mais ça n'a pas marché. je n'arrive pas à corriger mon code (Je précise que je début en VBA j'ai donc du mal à cerner exactement le problème dans mon code). j'ai donc essayé des solutions pas très propres comme de killer le processus Excel mais même ça, ça ne fonctionne pas.
Voila je m'en remet donc à vous pour m'éclairer, car il vaut mieux demander l'avis de personnes d'expériences pour éviter de se retrouver plus tard avec des instances fantômes dans tout les sens, et des messages d'erreur à tout va.
Ci dessous mon code VBA qui pilote Excel depuis Access:
Je ne sais pas si c'est important mais je lance cette fonction depuis une autre fonction que voici :
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 Public Function DémoPilotageExcel(strNomReq2 As String) Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook Dim i As Long Dim vtemp As Variant Exten = ".XLSX" Chemin = "c:\domusclub\rapport\" ' Initialiser les variables Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(Chemin & strNomReq2 & Exten) ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$P$4000"), , xlYes).Name = "Tableau1" Range("$A$1:$P$4000").Select ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleDark10" ' Code de fermeture xlBook.Save xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing Shell ("taskkill /F /IM Excel.exe") 'MsgBox "Fin de la procédure. :)" End Function
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 Public Function OuvreReq(strNomRequete As String) Exten = ".XLSX" Chemin = "c:\domusclub\rapport\" NomFich = Dir(Chemin & strNomRequete & Exten) If NomFich <> "" Then ModKillFile2 (Chemin & strNomRequete & Exten) If DCount("*", strNomRequete) > 0 Then 'MsgBox "La requête '" & strNomRequete & "' renvoie plusieurs enregistrements" DoCmd.TransferSpreadsheet acExport, , strNomRequete, Chemin & strNomRequete DémoPilotageExcel (strNomRequete) 'DoCmd.OpenQuery strNomRequete, acNormal If strNomRequete = "controle prix 1" Then FnSafeSendEmailInter If strNomRequete = "controle prix 2" Then FnSafeSendEmailEuro If strNomRequete = "controle prix 3" Then FnSafeSendEmailGit Else 'MsgBox "La requête '" & strNomRequete & "' ne renvoie aucun enregistrement" End If End Function
Voila, j'espère que vous pourrez m'aider
Partager