Bonjour,
je suis en train de bosser sur un projet BI :
-Une base fractionnée Dorsale.mdb.accdb sur un serveur
-Une frontale qui interagie avec la dorsale ( local)
Je gère l'ouverture de fichiers Excel depuis la frontale.
Le but est à l'ouverture du fichier Excel de lancer une requête de test sur une table tampon de ma dorsale ( si table vide --> faire une chose / si table non vide --> faire autre chose).
Le chemin d'accès à ma dorsale est modifiable via un fichier Excel( permet de gérer les changement de serveur).
Ma démarche a donc été :
- Dans mon fichier EXCEL :
--> Dans un module de créer une fonction me permettant de récupérer le chemin du répertoire ou se trouve la dorsale.
J'utilise cette fonction dans ma frontale et elle fonctionne très bien.
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 'mon string qui stocke le chemin Public SERVEUR As String Function GetServeur() ' Dim SERVEUR_TAMPON SERVEUR_TAMPON = "C:\Users\" & Environ("UserName") & "\Desktop\mon dossier" Dim xls As Excel.Application Dim wk As Excel.Workbook Dim ws As Excel.Worksheet Set xls = CreateObject("Excel.Application") 'mon fichier ou se trouve les chemins d'accès au serveur Set wk = xls.Workbooks.Open("" & SERVEUR_TAMPON & "\Paramétrage.xlsx") Set ws = wk.Sheets("Main") ws.Activate SERVEUR = ws.Range("B5") wk.Close End Function
--> Sur un click bouton de lancer La requête de test sur ma table TAMPON de ma dorsale en appelant ma fonction getserveur():
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 Private Sub CLICK_ACCEUIL() 'appel de ma fonction Call GetServeur 'test d'affichage du chemin MsgBox (SERVEUR + "\dorsale.mdb.accdb") 'déclare mon database Dim base As Database 'déclare ma requête Dim reqtest as string 'déclar emon recordset Dim rs As DAO.Recordset reqtest = "SELECT * FROM TAMPON_MAJ;" 'ouvre ma base Set base = DBEngine.OpenDatabase(SERVEUR + "\dorsale.mdb.accdb") 'ouvre mon recordset Set rs = base.OpenRecordset(reqtest, dbOpenForwardOnly, dbReadOnly) If rs.RecordCount = 0 Then MsgBox ("pas de valeur") Else MsgBox ("il ya des valeurs") End If rs.Close base.Close End Sub
Voilà mon problème le msgbox de test s'affiche mais vba plante ensuite sans code erreur (une fenêtre croix rouge et aucun message).
J'ai de remplacer le chemin SERVEUR + "\dorsale.mdb.accdb" , par le chemin complet de la dorsale entre "" = même résultat
J'ai tenté de remplacer le chemin SERVEUR + "\dorsale.mdb.accdb" par une variable BD = (monchemin...\dorsale.mdb.accbd) AVEC UNE FONCTION IDENTIQUE à get serveur = même résultat.
Quelqu'un à t-il une idée ?
Peu être ai-je mal compris le fonctionnement des dbengine....?
L'opendatabase fonctionne -t -il avec des .mdb.accdb ?
Merci
Partager