pilotage access par excel

ls8

XLDnaute Nouveau
Bonsoir à tous,

Je souhaite lancer
une requete access 2000 ["E-40-REQUETES-ESSAI"]
dans la base ["E:\PAR-08\PAR_08.MDB"]
demandant 1 parametre [REFERENCE_DATE],
à partir d'une feuille excel 2000.

J'ai honteusement "pompé" (MERCI !) sur le forum du code qui fonctionne :
1- bien quand je demande de lancer une macro access, mais le parametre doit être saisi,
2- bien jusqu'à l'ouverture de la base, mais plus du tout quand est demandée l'exécution d'un code access (macro convertie [E-40-REQUETES-ESSAI()] avec ou sans parametre.

Si quelqu'un(e) pouvait me donner une solution à l'une ou à l'autre des questions sans réponse, grand merci ! Je tourne en rond et en bourrique !
Autre voie possible, peut-on demander à access de lire une donnée (le parametre) dans la feuille excel restée ouverte (feuille [menu] où je lis les valeurs de variables du code joint) ?

Cordiales salutations
ls8


le code
Public REFERENCE_DATE

Sub Lancer_Access()

' VARIABLES
Dim AppAccess As Object ''' l'application Access (objet)
Dim StrBaseAcc As String ''' la base Access
Dim StrMacro As String ''' la macro Access à éxécuter (si besoin)


On Error GoTo ErrorInSub



Sheets("menu").Select
REFERENCE_DATE = Range("m10").Value

'Définition des valeurs Access
StrBaseAcc = Range("m11").Value
' StrMacro = Range("Macro_Access").Value
StrMacro = Range("m12").Value
' On gère une instance d'Access
Set AppAccess = CreateObject("Access.Application")

' On ouvre la base de données Access
AppAccess.OpenCurrentDatabase StrBaseAcc, False 'OK

'on définit si la base est visible ou non
AppAccess.Application.Visible = True ' OK

' Et on éxécute la macro (si besoin)
AppAccess.DoCmd.RunMacro StrMacro '"E-40-REQUETES-ESSAI" OK

' Et on éxécute le code (si besoin) NE FONCTIONNE NI AVEC VARIABLE StrMacro NI SAISIE DIRECTE "E-40-REQUETES-ESSAI"
' AppAccess.Run "E-40-REQUETES-ESSAI" 'ET PAS PLUS AVEC PARAMETRE DERRIERE VIRGULE
'on quitte Access
AppAccess.Application.Quit
Set AppAccess = Nothing


' GESTION DE L'ERREUR

ErrorInSub:

MsgBox "Une erreur a été rencontrée lors de l'éxécution de la macro Access depuis Excel. Vérifiez le code source SVP.", vbCritical, "Erreur VBA"

Set AppAccess = Nothing

' Exit Function
End Sub
 

Creepy

XLDnaute Accro
Re : pilotage access par excel

Bonsoir,

Dans ton exemple tu lances acces puis la requete.

C'est plus long et plus lourd que d'interroger la base directement en SQL. Met ton fichier en pièce jointe pour que l'on puisse te faire une belle requête SQL.

Cherche aussi sur le forum des informations.

@+

Creepy
 

ls8

XLDnaute Nouveau
Re : pilotage access par excel

Merci pour ta réponse,
en fichier joint le dossier excel et la base version light.

L'objectif :
1- lancer une macro access avec une macro excel, comportant un parametre [REFERENCE_DATE]stocké dans une cellule excel.
Quand tout fonctionnera, la base access sera invisible.Je viens de découvrir un pb dans la gestion de l'erreur de la macro excel.
2- créer sur le même disque, un répertoire e:\REFERENCE_DATE et un (des) fichier(s) excel qui comprenne(nt) 3 feuilles du dossier excel d'origine.
Je sais créer un répertoire et exporter des feuilles, mais pas exporter des feuilles dans le même fichier.

Merci encore
ls8
 

Pièces jointes

  • Mp2-1.zip
    40.7 KB · Affichages: 75
  • Mp2-2.zip
    29 KB · Affichages: 56

michel_m

XLDnaute Accro
Re : pilotage access par excel

Bonjour,

En jetant un œil sur ta base, je me dis qu'une base sans relations entre tables, sans clés primaires et étrangères est vouée à l'échec.

Effectuer des requêtes paramétrées ou non dans access ou avec Excel fonctionnera alors difficilement et sans fiabilité.

Donc, je te suggère d'installer ces clés avec l'intégrité référentielle désirée. Ensuite on pourra interroger avec SQL comme l'indique fort justement Creepy. Tu as d'ailleurs des exemples dans le Wiki page6

dans l'attente
 
Dernière édition:

jmd2

XLDnaute Accro
Re : pilotage access par excel

hello

tout comme michelM

et j'ajoute que mettre des désignations de champs qui soient compréhensibles est aussi un gage de fiabilité et de maintenabilité à moyen et long terme.

bon travail
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55