Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caractères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le document
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommune",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expression".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caractères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le document
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommune",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expression".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caractères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le document
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommune",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expression".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère to ut
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes a lors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caract ères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docume nt
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Te st1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommun e",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expressio n".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu " :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère to ut
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes a lors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/
Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caract ères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docume nt
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Te st1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommun e",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expressio n".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu " :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère to ut
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes a lors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (sous
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 caract ères).
La base Access contient une table avec le code INSEE des 36000 communes
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1" dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docume nt
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub "Te st1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat de la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayant le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqCommun e",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Expressio n".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepConnu " :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cell e
ce est changeante), voire une importation (dans le cas d'infos figées )
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critère s te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nul le part)
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cell e
ce est changeante), voire une importation (dans le cas d'infos figées )
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critère s te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nul le part)
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cell e
ce est changeante), voire une importation (dans le cas d'infos figées )
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critère s te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nul le part)
Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL wrote:Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais c e
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête u n
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre tabl e
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL <nospam_faq.outlook@free_fr.nospam> wrote:
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais c e
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête u n
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/
Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre tabl e
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL wrote:Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais c e
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête u n
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre tabl e
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Sub T est2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Ce que je n'arrive pas à faire, c'est exploiter à partir de VBA Excel une requête Access faisant appel à une fonction,
"Test", écrite en VBA Access.
Que j'utilise
Set RS = DB.OpenRecordset(Q.Sql)
comme dans ma Sub ou
Set rs = q.OpenRecordset
comme dans la tienne, j'obtiens l'erreur 3085 (Fonction 'Test' non défi nie dans l'Expression).
Dans ton code, il y a également dans le module ADO l'exemple suivant,
Sub reqParam2()
Dim cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
cat.ActiveConnection = CurrentProject.Connection
Set cmd = cat.Procedures("R_Clients_param").Command
cmd.Parameters("[maville]") = "Paris"
rst.Open cmd, , adOpenForwardOnly, adLockReadOnly, adCmdStoredProc
Do While Not rst.EOF
Debug.Print rst("société")
rst.MoveNext
Loop
rst.Close
mais j'ai une erreur de compilation ; il s'arrête sur
Dim cat As New ADOX.Catalog
avec "Type défini par l'utilisateur non défini".
NB - J'ai Access 2007
Cordialement,Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL wrote:Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
--
Cordialement,
Michel Gabolywww.gaboly.com- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Sub T est2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Ce que je n'arrive pas à faire, c'est exploiter à partir de VBA Excel une requête Access faisant appel à une fonction,
"Test", écrite en VBA Access.
Que j'utilise
Set RS = DB.OpenRecordset(Q.Sql)
comme dans ma Sub ou
Set rs = q.OpenRecordset
comme dans la tienne, j'obtiens l'erreur 3085 (Fonction 'Test' non défi nie dans l'Expression).
Dans ton code, il y a également dans le module ADO l'exemple suivant,
Sub reqParam2()
Dim cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
cat.ActiveConnection = CurrentProject.Connection
Set cmd = cat.Procedures("R_Clients_param").Command
cmd.Parameters("[maville]") = "Paris"
rst.Open cmd, , adOpenForwardOnly, adLockReadOnly, adCmdStoredProc
Do While Not rst.EOF
Debug.Print rst("société")
rst.MoveNext
Loop
rst.Close
mais j'ai une erreur de compilation ; il s'arrête sur
Dim cat As New ADOX.Catalog
avec "Type défini par l'utilisateur non défini".
NB - J'ai Access 2007
Cordialement,
Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL <nospam_faq.outlook@free_fr.nospam> wrote:
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/
Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
--
Cordialement,
Michel Gabolywww.gaboly.com- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Sub T est2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Ce que je n'arrive pas à faire, c'est exploiter à partir de VBA Excel une requête Access faisant appel à une fonction,
"Test", écrite en VBA Access.
Que j'utilise
Set RS = DB.OpenRecordset(Q.Sql)
comme dans ma Sub ou
Set rs = q.OpenRecordset
comme dans la tienne, j'obtiens l'erreur 3085 (Fonction 'Test' non défi nie dans l'Expression).
Dans ton code, il y a également dans le module ADO l'exemple suivant,
Sub reqParam2()
Dim cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
cat.ActiveConnection = CurrentProject.Connection
Set cmd = cat.Procedures("R_Clients_param").Command
cmd.Parameters("[maville]") = "Paris"
rst.Open cmd, , adOpenForwardOnly, adLockReadOnly, adCmdStoredProc
Do While Not rst.EOF
Debug.Print rst("société")
rst.MoveNext
Loop
rst.Close
mais j'ai une erreur de compilation ; il s'arrête sur
Dim cat As New ADOX.Catalog
avec "Type défini par l'utilisateur non défini".
NB - J'ai Access 2007
Cordialement,Bonjour,
Exemple de requête paramétrée en DAO:
Sub ReqParamDAO()
Dim bd As DAO.Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "Access2000.mdb")
Set q = bd.QueryDefs("R_param_ville")
q.Parameters("nomville") = "paris"
Set rs = q.OpenRecordset
Do While Not rs.EOF
MsgBox rs!nom_client
rs.MoveNext
Loop
End Sub
http://boisgontierj.free.fr/fichiers/jb-excelaccess.zip
JB
On 30 mar, 00:52, JièL wrote:Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seu l et
même prog.
Avec Access fait tout simplement un attachement de table excel (si cel le
ce est changeante), voire une importation (dans le cas d'infos figée s)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critèr es te
telle ou telle autre c'est hyper simple à gérer avec les requête s alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nu lle part)
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-)http://forums.offices.free.fr/
La NOUVELLE Faq Outlook est là :http://faq.outlook.free.fr/index.php
Les stats de CDO :http://faq.outlook.free.fr/cdo/Bonsoir,
J'ai besoin d'alimenter une base Access à partir de documents Excel et
je rame, car je connais très mal Access.
En l'occurrence mon problème est le suivant : chaque document Excel
contient, entre autres choses, une localité et un département (so us
forme de texte, à cause des 01, 02, ... pour avoir toujours 2 carac tères).
La base Access contient une table avec le code INSEE des 36000 commun es
françaises. Les 2 premiers caractères du code INSEE correspondent au
département, comme un code postal. Je dois alimenter une autre table
avec une douzaine de champs dont la localité et le code INSEE.
J'ai construit une requête, "ReqCommune" qui me liste toutes les
communes ayant pour nom la valeur d'une cellule nommée "Localité1 " dans
le document Excel. Par exemple, il y a 4 "Montréal", situés dans 4
départements différents. La voici :
SELECT LOCALITE.insee_comm, LOCALITE.NCC
FROM LOCALITE, Param
WHERE (((LOCALITE.NCC)=[Param].[Localité]));
"Param" est une table qui ne contient qu'un enregistrement, avec la
localité et le département, tels qu'ils apparaissent dans le docu ment
Excel.
"Param" est alimentée par la Sub "MAJParam", appelée par la Sub " Test1".
Une seconde requête, "ReqCommuneDepConnu", exploite le résultat d e la
première ("ReqCommune") et fait appel à une fonction, "Test" dont le
code est reproduit plus bas. Il s'agit d'éliminer les communes ayan t le
bon nom, mais situées dans un autre département :
SELECT ReqCommune.insee_comm, ReqCommune.NCC
FROM ReqCommune, Param
WHERE (((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));
A partir de la Sub "Test2", j'arrive à lancer la requête "ReqComm une",
sans difficulté particulière.
Par contre je suis incapable (Sub "Test3") de faire pareil avec
"ReqCommuneDepConnu" : j'obtiens le message (pas très surprenant
d'ailleurs) "Erreur 3085 Fonction 'Test' non définie dans l'Express ion".
J'ai voulu faire des essais avec
Q.Execute
ou
DB.Execute Q.Sql, dbFailOnError
sans succès ;-((((
Quelqu'un aurait-il une piste ?
Merci d'avance.
Extrait du code VBA Access (fonction utilisée par "ReqCommuneDepCon nu" :
Function Test(Code$, Dep$)
Test = (Left(Code, 2) = Dep)
End Function
Extrait du code VBA Excel destiné à alimenter la base :
Option Explicit
Private DB As Database, RS As Recordset
Private Sub OuvreBase()
ChDir ThisWorkbook.Path
Set DB = OpenDatabase(ThisWorkbook.Sheets(1).Evaluate("Base"))
End Sub
Private Sub Test1()
MAJParam ActiveWorkbook.Sheets(1).Range("Localité1")
' Suite du code, à venir
End Sub
Private Sub MAJParam(Loc As Range)
OuvreBase
Set RS = DB.OpenRecordset("Param")
RS.Edit
RS!Localité = Loc
RS!Dép = Loc.Offset(2)
RS.Update
RS.Close
DB.Close
End Sub
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Private Sub Test3()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommuneDepConnu")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
--
Cordialement,
Michel Gabolywww.gaboly.com- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Les champs calculés dans les requêtes paramétrées ne doivent ut iliser
que les fonctions standards d'Access si elles sont exécutées à pa rtir
d'un autre logiciel.
Depart: Gauche([codePostal];2) ' fonctionne
Depart: Departement([codePostal]) ' ne fonctionne pas si exécuté
par un autre logiciel
JB
On 30 mar, 09:19, Michel Gaboly wrote:Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Su b Test2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Les champs calculés dans les requêtes paramétrées ne doivent ut iliser
que les fonctions standards d'Access si elles sont exécutées à pa rtir
d'un autre logiciel.
Depart: Gauche([codePostal];2) ' fonctionne
Depart: Departement([codePostal]) ' ne fonctionne pas si exécuté
par un autre logiciel
JB
On 30 mar, 09:19, Michel Gaboly <michelgab...@bluewin.ch> wrote:
Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Su b Test2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Les champs calculés dans les requêtes paramétrées ne doivent ut iliser
que les fonctions standards d'Access si elles sont exécutées à pa rtir
d'un autre logiciel.
Depart: Gauche([codePostal];2) ' fonctionne
Depart: Departement([codePostal]) ' ne fonctionne pas si exécuté
par un autre logiciel
JB
On 30 mar, 09:19, Michel Gaboly wrote:Bonjour,
Merci pour ta réponse, mais ton exemple correspond en gros à ma Su b Test2 :
Private Sub Test2()
Dim Q As QueryDef, RS As Recordset
OuvreBase
Set Q = DB.QueryDefs("ReqCommune")
Set RS = DB.OpenRecordset(Q.Sql)
MsgBox RS!insee_comm
End Sub
Cela ne résoud pas mon problème ;-((
Salut JièL
Merci pour ta réponse, mais je ne peux pas tout gérer dans Access : il
s'agit d'un dévelopement fait pour une association entomologique.
J'ai fait sous Excel un ouil qui permet à des naturalistes de saisir des
observations de papillons.
J'ai ainsi récupéré une centaine de documents Excel, reçus de l'ensemble
des naturalistes participant au programme, à partir desquels je dois
alimenter par une moulinette une base Access, gérée par le Museum
National d'Histoire Naturelle.
Je vais essayer d'explorer comment fonctionnent les importations, et
reposer la quesion sur MPFA.
Merci encoreSalut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul
et même prog.
Avec Access fait tout simplement un attachement de table excel (si
celle ce est changeante), voire une importation (dans le cas d'infos
figées) dans une table existante ou dans une nouvelle table, et
ensuite fais ce que tu as à faire directement dans Access, c'est bien
plus simple.
Une maj de table via des données d'une autre en fonction de critères
te telle ou telle autre c'est hyper simple à gérer avec les requêtes
alors que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle
part)
Salut JièL
Merci pour ta réponse, mais je ne peux pas tout gérer dans Access : il
s'agit d'un dévelopement fait pour une association entomologique.
J'ai fait sous Excel un ouil qui permet à des naturalistes de saisir des
observations de papillons.
J'ai ainsi récupéré une centaine de documents Excel, reçus de l'ensemble
des naturalistes participant au programme, à partir desquels je dois
alimenter par une moulinette une base Access, gérée par le Museum
National d'Histoire Naturelle.
Je vais essayer d'explorer comment fonctionnent les importations, et
reposer la quesion sur MPFA.
Merci encore
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul
et même prog.
Avec Access fait tout simplement un attachement de table excel (si
celle ce est changeante), voire une importation (dans le cas d'infos
figées) dans une table existante ou dans une nouvelle table, et
ensuite fais ce que tu as à faire directement dans Access, c'est bien
plus simple.
Une maj de table via des données d'une autre en fonction de critères
te telle ou telle autre c'est hyper simple à gérer avec les requêtes
alors que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle
part)
Salut JièL
Merci pour ta réponse, mais je ne peux pas tout gérer dans Access : il
s'agit d'un dévelopement fait pour une association entomologique.
J'ai fait sous Excel un ouil qui permet à des naturalistes de saisir des
observations de papillons.
J'ai ainsi récupéré une centaine de documents Excel, reçus de l'ensemble
des naturalistes participant au programme, à partir desquels je dois
alimenter par une moulinette une base Access, gérée par le Museum
National d'Histoire Naturelle.
Je vais essayer d'explorer comment fonctionnent les importations, et
reposer la quesion sur MPFA.
Merci encoreSalut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul
et même prog.
Avec Access fait tout simplement un attachement de table excel (si
celle ce est changeante), voire une importation (dans le cas d'infos
figées) dans une table existante ou dans une nouvelle table, et
ensuite fais ce que tu as à faire directement dans Access, c'est bien
plus simple.
Une maj de table via des données d'une autre en fonction de critères
te telle ou telle autre c'est hyper simple à gérer avec les requêtes
alors que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle
part)
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)
Salut Michel
juste un conseil : arrête de te prendre la tête avec Excel, gère tout
dans Access !!!
Je sais, c'est pas ta tasse de thé, mais c'est si simple dans un seul et
même prog.
Avec Access fait tout simplement un attachement de table excel (si celle
ce est changeante), voire une importation (dans le cas d'infos figées)
dans une table existante ou dans une nouvelle table, et ensuite fais ce
que tu as à faire directement dans Access, c'est bien plus simple.
Une maj de table via des données d'une autre en fonction de critères te
telle ou telle autre c'est hyper simple à gérer avec les requêtes alors
que c'est ch*** comme tout avec du VBA
Si tu veux plus d'aide, je te conseille de poser ta question dans ce
sens sur le NG Access... et surtout ne leur dit pas que tu gère des
"bases de données" avec Excel, il vont se moquer ;-)))))))))))
Sans avoir testé je peut te dire que "WHERE
(((Test([ReqCommune]![insee_comm],[Param]![Dép]))=True));" ne peut
évidement pas fonctionner. Par contre, si tu met dans ta requête un
champ du genre "toto:gauche(Code; 2)" et que tu met ton critères
"[Param]![Dép]" sous ce dernier la ça devrait aller (sans les " nulle part)