Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" wrote in message
news:Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" <LaurentM@discussions.microsoft.com> wrote in message
news:813C5DDE-9913-4F1E-8B51-E8B0994430B3@microsoft.com...
Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" wrote in message
news:Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Si je comprends bien ton code (ce qui n'est pas tout à fait sûr), on créé une
requête Access dotée de paramètres,et celle-ci est ensuite exécutée
mais est-ce que cela correspond à la transcriptioon vba d'une requête access?
Ce que je souhaite faire c'est de stocker mes requêtes dans Access puis de
les reutiliser dans mon code vba.Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" wrote in message
news:Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Si je comprends bien ton code (ce qui n'est pas tout à fait sûr), on créé une
requête Access dotée de paramètres,et celle-ci est ensuite exécutée
mais est-ce que cela correspond à la transcriptioon vba d'une requête access?
Ce que je souhaite faire c'est de stocker mes requêtes dans Access puis de
les reutiliser dans mon code vba.
Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" <LaurentM@discussions.microsoft.com> wrote in message
news:813C5DDE-9913-4F1E-8B51-E8B0994430B3@microsoft.com...
Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
Si je comprends bien ton code (ce qui n'est pas tout à fait sûr), on créé une
requête Access dotée de paramètres,et celle-ci est ensuite exécutée
mais est-ce que cela correspond à la transcriptioon vba d'une requête access?
Ce que je souhaite faire c'est de stocker mes requêtes dans Access puis de
les reutiliser dans mon code vba.Bonjour,
Je pense que ce bout de code devrait t'aider. Il faut utiliser la référence
à Microsoft ADO.
Dim adoCmd As ADODB.Command
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
'Connexion à la base de données
'sAccessDB est une variable avec le nom et le chemin complet de la base
Access
Set adoConn = New ADODB.Connection
adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
sAccessDB & "; USER IDmin; PASSWORD=;"
Set adoCmd = New ADODB.Command
With adoCmd
.ActiveConnection = adoConn
'Nom de la requête
.CommandText = "qryPayrollImport"
.CommandType = adCmdStoredProc
'Paramètres définis dans la requête
.Parameters.Append .CreateParameter("pCycle", adVarChar,
adParamInput, 16, sCompSel)
.Parameters.Append .CreateParameter("pWorkDate", adDate,
adParamInput, , UpdateDate)
'Exécution de la requête
Set adoRS = adoCmd.Execute
End With
'Ferme la connexion
Set adoRS = Nothing
Set adoCmd = Nothing
Set adoConn = Nothing
Bon courage.
--
Patrick
"Laurent M" wrote in message
news:Bonjour, je développe une appli Excel - Access avec des liaisons VBA
Je souhaiterais, pour mes fonctions d'import - export VBA utiliser des
requêtes prédéfinies avec Access.
Est-ce possible d'appeler ces requêtes dans mon code?
Si oui comment? :)
Merci beaucoup !
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access 9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que tu
veux avec.tu n'es pas obligé de faire une lecture par enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access 9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que tu
veux avec.tu n'es pas obligé de faire une lecture par enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access 9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que tu
veux avec.tu n'es pas obligé de faire une lecture par enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each
next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as
acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme
va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tu
veux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure
des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each
next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as
acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme
va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tu
veux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure
des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each
next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as
acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme
va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tu
veux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure
des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
re,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" a écrit dans le message de
news:J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
deta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
baseAccess
pour permettre uen boucle au cas où. C'est possible aussi par for each
nextin collection des requêtes ( écriture cf VBA sous Access puisque tu as
accesau modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrementMsgBox " Il n'y a aucune données dans la requete. Le programme
vaêtre arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tuveux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est unexemple Tu fais ce que tu veux avec un objet recordset dans la mesure
deschoses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
re,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" <LaurentM@discussions.microsoft.com> a écrit dans le message de
news: DC8AA458-DD87-4E8E-AAD8-90398BF23B3F@microsoft.com...
J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each
next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as
acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme
va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tu
veux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure
des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
re,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" a écrit dans le message de
news:J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
deta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
baseAccess
pour permettre uen boucle au cas où. C'est possible aussi par for each
nextin collection des requêtes ( écriture cf VBA sous Access puisque tu as
accesau modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrementMsgBox " Il n'y a aucune données dans la requete. Le programme
vaêtre arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tuveux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est unexemple Tu fais ce que tu veux avec un objet recordset dans la mesure
deschoses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
D'accord j'ai compris d'où vient l'erreur. J'ai access 2003 et javais ajouté
la bibliothèque Microsoft Access 11.0, j'ai donc changé ça
J'ai à présent une nouvelle erreur sur cette ligne :
Set rs = appAccess.CurrentDb.OpenRecordset(MyQuery, , dbReadOnly)
Je reçois l'erreur : "incompatibilité de type"
MyQuery est une string portant le nom de ma requête enregistrée dans Accessre,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" a écrit dans le message de
news:J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
deta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
baseAccess
pour permettre uen boucle au cas où. C'est possible aussi par for each
nextin collection des requêtes ( écriture cf VBA sous Access puisque tu as
accesau modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrementMsgBox " Il n'y a aucune données dans la requete. Le programme
vaêtre arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tuveux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est unexemple Tu fais ce que tu veux avec un objet recordset dans la mesure
deschoses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
D'accord j'ai compris d'où vient l'erreur. J'ai access 2003 et javais ajouté
la bibliothèque Microsoft Access 11.0, j'ai donc changé ça
J'ai à présent une nouvelle erreur sur cette ligne :
Set rs = appAccess.CurrentDb.OpenRecordset(MyQuery, , dbReadOnly)
Je reçois l'erreur : "incompatibilité de type"
MyQuery est une string portant le nom de ma requête enregistrée dans Access
re,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" <LaurentM@discussions.microsoft.com> a écrit dans le message de
news: DC8AA458-DD87-4E8E-AAD8-90398BF23B3F@microsoft.com...
J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !
bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0
object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
de
ta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
base
Access
pour permettre uen boucle au cas où. C'est possible aussi par for each
next
in collection des requêtes ( écriture cf VBA sous Access puisque tu as
acces
au modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrement
MsgBox " Il n'y a aucune données dans la requete. Le programme
va
être arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tu
veux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est un
exemple Tu fais ce que tu veux avec un objet recordset dans la mesure
des
choses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
D'accord j'ai compris d'où vient l'erreur. J'ai access 2003 et javais ajouté
la bibliothèque Microsoft Access 11.0, j'ai donc changé ça
J'ai à présent une nouvelle erreur sur cette ligne :
Set rs = appAccess.CurrentDb.OpenRecordset(MyQuery, , dbReadOnly)
Je reçois l'erreur : "incompatibilité de type"
MyQuery est une string portant le nom de ma requête enregistrée dans Accessre,
as-tu créé ta référence à la bibilothèque d'objet Access.
Par ailleurs, Quel Access as-tu ,2000,2002 , autre car de mémoire la
bibilothèque Access Library 9.0 correspond à Access 2000
A+
"Laurent M" a écrit dans le message de
news:J'ai testé ton code mais la ligne :
Set appAccess = CreateObject("Access.Application.9")
retourne l'erreur : "un composant activeX ne peut créer d'objet"
Je ne sais que faire !bonjour,
Faire une référence dans le menu Outils/Références à Microsoft Access
9.0object Library.
Puis écrire une procédure suivante
Dim appAccess As Access.Application, nombase As String
Dim rs As Recordset,TABNOMREQUETE(1 to 5) as string
'on inhibe le rafraichissement de l'écran
Application.ScreenUpdating = False
'Crée une nouvelle instance de Microsoft Access.
Set appAccess = CreateObject("Access.Application.9")
'Ouvre la base de données dans la fenêtre Microsoft Access.
appAccess.OpenCurrentDatabase nombase 'nombase doit être le niom complet
deta base Access
déclarer dans un tableau p.e le nom de tes requetes stockées dans ta
baseAccess
pour permettre uen boucle au cas où. C'est possible aussi par for each
nextin collection des requêtes ( écriture cf VBA sous Access puisque tu as
accesau modele d'objet Access en raison des déclarations précédentes)
TABNOMREQUETE(1) = "Nom Requete1"
TABNOMREQUETE(2) = "Nom Requete2"
TABNOMREQUETE(3) = "Nom Requete3"
TABNOMREQUETE(4) = "Nom Requete4"
TABNOMREQUETE(5) = "Nom Requete5"
For J = 1 To 5
Set rs = appAccess.CurrentDb.OpenRecordset(TABNOMREQUETE(J), ,
dbReadOnly)
If rs.BOF = True Then 'on teste s'il existe au moins un
enregistrementMsgBox " Il n'y a aucune données dans la requete. Le programme
vaêtre arrêté"
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
Exit Sub
else
rs.MoveFirst
Do
'ici tu écris le code pour traiter les enregistrements. Tu fais ce que
tuveux avec.tu n'es pas obligé de faire une lecture par
enregistrement.C'est unexemple Tu fais ce que tu veux avec un objet recordset dans la mesure
deschoses autorisées dans ce cas.
rs.MoveNext
Loop Until rs.EOF = True
end if
next
'voila , c'est fini on reset les variables, on ferme Access et on plie.
rs.Close
Set rs = Nothing
With appAccess
.CloseCurrentDatabase
.Quit
End With
End Sub
A+
J'ai poursuivi mes recherches et il semblerait que ce que je recherche
s'articule autour des querydefs
Qu'en pensez-vous?
je pense que ce que tu cherches , si j'ai bien compris, c'est à activer
J'ai poursuivi mes recherches et il semblerait que ce que je recherche
s'articule autour des querydefs
Qu'en pensez-vous?
je pense que ce que tu cherches , si j'ai bien compris, c'est à activer
J'ai poursuivi mes recherches et il semblerait que ce que je recherche
s'articule autour des querydefs
Qu'en pensez-vous?
je pense que ce que tu cherches , si j'ai bien compris, c'est à activer