Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Soucis requete VBA XLS -> Access

3 réponses
Avatar
dvincent
Décidément, ces temps ci, je tombe sur des soucis régulièrement...

Voilà mon problème qui me tracasse depuis ce matin,

J'utilise 2 fichiers ( un xls et un xla ) le xla contenant toutes mes
fonctions

Afin d'eviter sans arrêt des ouvertures/fermetures vers ma base de donnée
( car c'est long ) j'ai voulu l'ouvrir au chargement du fichier xls et la
fermer quand ce dernier et quitter

J'ai donc commencé mes petites modifications :

Dans mon Fichier XLS "This WorkBook" j'ai :

Private Const CheminBase = "G:\Base\"
Private Const CheminBDDBase = CheminBase & "BDBase.mdb"

Private Sub Workbook_Open()
Application.Run "OpenBDD", CheminBDDBase
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "CloseBDD"
End Sub

Dans mon fichier XLA j'ai les modules suivants :

= MFonctionsCommunes =

Public Sub OpenBDD(DbName)
Set db = DBEngine.Workspaces(0).OpenDatabase(DbName)
End Sub

Public Sub CloseBDD()
db.Close
End Sub

=====

= MFonctionsProjet =
Public db As Database

Sub Fonction1()
Dim rs As Recordset
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
....etc...
End Sub


Lorsque je lance Fonction1 j'ai une erreur :

Erreur d'execution '91':
Variable objet ou variable de bloc With non définie
( sur la ligne nbRecord ....)

Je me retrouve obligé de faire comme avant, c'est à dire ouvrir la base
avant le nbRecord... :

OpenBDD CheminBDDBase
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
CloseBDD

pour que ca marche, je ne vois pas pourquoi j'obtiens l'erreur sur mon "db",
et je ne vois surtout pas comment m'en sortir, car j'aurais voulu eviter les
ouvertures/fermetures de base régulières, surtout quand j'ai des
imbrications de fonctions qui elles aussi ouvre la base.

Merci de votre aide ! Je vous souhaite à tous un bon réveillon, un peu en
avance une bonne année 2005 avec surtout la santé.

Vincent.

3 réponses

Avatar
Pierre CFI [mvp]
bonjour
tu es sur que public db as database est déclaré dans la bonne appli ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"dvincent" a écrit dans le message de news:
Décidément, ces temps ci, je tombe sur des soucis régulièrement...

Voilà mon problème qui me tracasse depuis ce matin,

J'utilise 2 fichiers ( un xls et un xla ) le xla contenant toutes mes
fonctions

Afin d'eviter sans arrêt des ouvertures/fermetures vers ma base de donnée
( car c'est long ) j'ai voulu l'ouvrir au chargement du fichier xls et la
fermer quand ce dernier et quitter

J'ai donc commencé mes petites modifications :

Dans mon Fichier XLS "This WorkBook" j'ai :

Private Const CheminBase = "G:Base"
Private Const CheminBDDBase = CheminBase & "BDBase.mdb"

Private Sub Workbook_Open()
Application.Run "OpenBDD", CheminBDDBase
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "CloseBDD"
End Sub

Dans mon fichier XLA j'ai les modules suivants :

= MFonctionsCommunes >
Public Sub OpenBDD(DbName)
Set db = DBEngine.Workspaces(0).OpenDatabase(DbName)
End Sub

Public Sub CloseBDD()
db.Close
End Sub

==== >
= MFonctionsProjet > Public db As Database

Sub Fonction1()
Dim rs As Recordset
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
....etc...
End Sub


Lorsque je lance Fonction1 j'ai une erreur :

Erreur d'execution '91':
Variable objet ou variable de bloc With non définie
( sur la ligne nbRecord ....)

Je me retrouve obligé de faire comme avant, c'est à dire ouvrir la base
avant le nbRecord... :

OpenBDD CheminBDDBase
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
CloseBDD

pour que ca marche, je ne vois pas pourquoi j'obtiens l'erreur sur mon "db",
et je ne vois surtout pas comment m'en sortir, car j'aurais voulu eviter les
ouvertures/fermetures de base régulières, surtout quand j'ai des
imbrications de fonctions qui elles aussi ouvre la base.

Merci de votre aide ! Je vous souhaite à tous un bon réveillon, un peu en
avance une bonne année 2005 avec surtout la santé.

Vincent.




Avatar
dvincent
Je n'ai pas trop le choix, je dois bien definir mon db en public que dans le
module, on ne peut pas definir de public dans le ThisWorkgroup ( ca passe en
rouge )

"Pierre CFI [mvp]" a écrit dans le message de
news: #
bonjour
tu es sur que public db as database est déclaré dans la bonne appli ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"dvincent" a écrit dans le message de
news:

Décidément, ces temps ci, je tombe sur des soucis régulièrement...

Voilà mon problème qui me tracasse depuis ce matin,

J'utilise 2 fichiers ( un xls et un xla ) le xla contenant toutes mes
fonctions

Afin d'eviter sans arrêt des ouvertures/fermetures vers ma base de
donnée


( car c'est long ) j'ai voulu l'ouvrir au chargement du fichier xls et
la


fermer quand ce dernier et quitter

J'ai donc commencé mes petites modifications :

Dans mon Fichier XLS "This WorkBook" j'ai :

Private Const CheminBase = "G:Base"
Private Const CheminBDDBase = CheminBase & "BDBase.mdb"

Private Sub Workbook_Open()
Application.Run "OpenBDD", CheminBDDBase
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "CloseBDD"
End Sub

Dans mon fichier XLA j'ai les modules suivants :

= MFonctionsCommunes > >
Public Sub OpenBDD(DbName)
Set db = DBEngine.Workspaces(0).OpenDatabase(DbName)
End Sub

Public Sub CloseBDD()
db.Close
End Sub

==== > >
= MFonctionsProjet > > Public db As Database

Sub Fonction1()
Dim rs As Recordset
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord
FROM


tEntreprise").Fields("nbrecord")
....etc...
End Sub


Lorsque je lance Fonction1 j'ai une erreur :

Erreur d'execution '91':
Variable objet ou variable de bloc With non définie
( sur la ligne nbRecord ....)

Je me retrouve obligé de faire comme avant, c'est à dire ouvrir la base
avant le nbRecord... :

OpenBDD CheminBDDBase
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
CloseBDD

pour que ca marche, je ne vois pas pourquoi j'obtiens l'erreur sur mon
"db",


et je ne vois surtout pas comment m'en sortir, car j'aurais voulu eviter
les


ouvertures/fermetures de base régulières, surtout quand j'ai des
imbrications de fonctions qui elles aussi ouvre la base.

Merci de votre aide ! Je vous souhaite à tous un bon réveillon, un peu
en


avance une bonne année 2005 avec surtout la santé.

Vincent.








Avatar
Pierre CFI [mvp]
oui, mais tu parles d'un xla et d'un xls

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"dvincent" a écrit dans le message de news:
Je n'ai pas trop le choix, je dois bien definir mon db en public que dans le
module, on ne peut pas definir de public dans le ThisWorkgroup ( ca passe en
rouge )

"Pierre CFI [mvp]" a écrit dans le message de
news: #
bonjour
tu es sur que public db as database est déclaré dans la bonne appli ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"dvincent" a écrit dans le message de
news:

Décidément, ces temps ci, je tombe sur des soucis régulièrement...

Voilà mon problème qui me tracasse depuis ce matin,

J'utilise 2 fichiers ( un xls et un xla ) le xla contenant toutes mes
fonctions

Afin d'eviter sans arrêt des ouvertures/fermetures vers ma base de
donnée


( car c'est long ) j'ai voulu l'ouvrir au chargement du fichier xls et
la


fermer quand ce dernier et quitter

J'ai donc commencé mes petites modifications :

Dans mon Fichier XLS "This WorkBook" j'ai :

Private Const CheminBase = "G:Base"
Private Const CheminBDDBase = CheminBase & "BDBase.mdb"

Private Sub Workbook_Open()
Application.Run "OpenBDD", CheminBDDBase
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "CloseBDD"
End Sub

Dans mon fichier XLA j'ai les modules suivants :

= MFonctionsCommunes > > >
Public Sub OpenBDD(DbName)
Set db = DBEngine.Workspaces(0).OpenDatabase(DbName)
End Sub

Public Sub CloseBDD()
db.Close
End Sub

==== > > >
= MFonctionsProjet > > > Public db As Database

Sub Fonction1()
Dim rs As Recordset
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord
FROM


tEntreprise").Fields("nbrecord")
....etc...
End Sub


Lorsque je lance Fonction1 j'ai une erreur :

Erreur d'execution '91':
Variable objet ou variable de bloc With non définie
( sur la ligne nbRecord ....)

Je me retrouve obligé de faire comme avant, c'est à dire ouvrir la base
avant le nbRecord... :

OpenBDD CheminBDDBase
nbRecord = db.OpenRecordset("SELECT COUNT(identreprise) AS nbRecord FROM
tEntreprise").Fields("nbrecord")
CloseBDD

pour que ca marche, je ne vois pas pourquoi j'obtiens l'erreur sur mon
"db",


et je ne vois surtout pas comment m'en sortir, car j'aurais voulu eviter
les


ouvertures/fermetures de base régulières, surtout quand j'ai des
imbrications de fonctions qui elles aussi ouvre la base.

Merci de votre aide ! Je vous souhaite à tous un bon réveillon, un peu
en


avance une bonne année 2005 avec surtout la santé.

Vincent.