j'ai une table avec un seul champ et plusieurs=20
enregistrements (mettons table1), et une autre table=20
(table2) avec plusieurs champs et pusieurs enregistrements.
Je voudrais savoir s'il est possible de v=E9rifier si les=20
contenus pr=E9sents dans le champ de la table 1 existent=20
dans n'importe quel champ de la table 2.
En gros, tester si toutes les valeurs dans la table 1 sont=20
des valeurs qui existent quelquepart dans la table2...
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Raymond [mvp]" a écrit dans le message news: ##
tu sais bien que toute procédure qui fonctionne est toujours top. je regarderai que pour te critiquer. Comme j'ai dit à Jessy, Pierre est en vacances et j'ai les ordres pour surveiller les jeunots !
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
"Raymond [mvp]" écrivait news:#:
Bonjour.
Certainement tordu oui. Eric a travaillé sur la requête je pense qu'il va se manifester rapidement sinon je reprendrai le flambeau.
Bonjour Raymond,
Je viens de lui envoyer ma moulinette. C'est une procédure avec pour argument le nom de la table à vérifier. Ca me parait plus simple que le sql
et plus facile à automatiser pour n tables.
Je vais lui donner un exemple du sql que j'avais fait - figé pour une table
- *en m'inspirant de ton envoi* mais je trouve le code lourd à adapter pour
passer en argument le nom des tables.
Si ma proc ne te parait pas top, n'hésites pas à me le dire.
A+ Eric
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions
telle qu'Access 97 voir Access 2 ... ;-))))
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message news:
##iUE5LZEHA.3112@tk2msftngp13.phx.gbl...
tu sais bien que toute procédure qui fonctionne est toujours top. je
regarderai que pour te critiquer. Comme j'ai dit à Jessy, Pierre est en
vacances et j'ai les ordres pour surveiller les jeunots !
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de
news:XnF95205F71D30FDfframZZhotmailcom@207.46.248.16...
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Raymond [mvp]" a écrit dans le message news: ##
tu sais bien que toute procédure qui fonctionne est toujours top. je regarderai que pour te critiquer. Comme j'ai dit à Jessy, Pierre est en vacances et j'ai les ordres pour surveiller les jeunots !
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
"Raymond [mvp]" écrivait news:#:
Bonjour.
Certainement tordu oui. Eric a travaillé sur la requête je pense qu'il va se manifester rapidement sinon je reprendrai le flambeau.
Bonjour Raymond,
Je viens de lui envoyer ma moulinette. C'est une procédure avec pour argument le nom de la table à vérifier. Ca me parait plus simple que le sql
et plus facile à automatiser pour n tables.
Je vais lui donner un exemple du sql que j'avais fait - figé pour une table
- *en m'inspirant de ton envoi* mais je trouve le code lourd à adapter pour
passer en argument le nom des tables.
Si ma proc ne te parait pas top, n'hésites pas à me le dire.
A+ Eric
Eric
J'enfonce le clou, j'ai même récupéré Access 1.0 (8 D7 avec Install ODBC)- 1992- pour un posteur qui ne s'est plus jamais manifesté d'ailleurs.
Eric
"Jessy Sempere [MVP]" écrivait news:cciu5p$ce5$:
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------
J'enfonce le clou, j'ai même récupéré Access 1.0 (8 D7 avec Install ODBC)-
1992- pour un posteur qui ne s'est plus jamais manifesté d'ailleurs.
Heureusement qu'il reste des jeunots pour utiliser les anciennes
versions telle qu'Access 97 voir Access 2 ... ;-))))
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
J'enfonce le clou, j'ai même récupéré Access 1.0 (8 D7 avec Install ODBC)- 1992- pour un posteur qui ne s'est plus jamais manifesté d'ailleurs.
Eric
"Jessy Sempere [MVP]" écrivait news:cciu5p$ce5$:
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------
Raymond [mvp]
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde moderne, malgré tout ce que ça nous en coûte.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:cciu5p$ce5$
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde
moderne, malgré tout ce que ça nous en coûte.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:cciu5p$ce5$1@muguet.sncf.fr...
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions
telle qu'Access 97 voir Access 2 ... ;-))))
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde moderne, malgré tout ce que ça nous en coûte.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:cciu5p$ce5$
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
Jessy Sempere [MVP]
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je sais... c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien faire avec ce qu'on a...
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Raymond [mvp]" a écrit dans le message news:
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde moderne, malgré tout ce que ça nous en coûte.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:cciu5p$ce5$
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
-- @+ Jessy Sempere - Access MVP
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne
fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je sais...
c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien
faire avec ce qu'on a...
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message news:
uqXHLGMZEHA.1248@TK2MSFTNGP11.phx.gbl...
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde
moderne, malgré tout ce que ça nous en coûte.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:cciu5p$ce5$1@muguet.sncf.fr...
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions
telle qu'Access 97 voir Access 2 ... ;-))))
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je sais... c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien faire avec ce qu'on a...
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Raymond [mvp]" a écrit dans le message news:
Nous, on a eu le courage de se recycler et de suivre l'évolution du monde moderne, malgré tout ce que ça nous en coûte.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:cciu5p$ce5$
Heureusement qu'il reste des jeunots pour utiliser les anciennes versions telle qu'Access 97 voir Access 2 ... ;-))))
Tu sais bien qu'on va te plaisanter encore longtemps avec ça, comme les trains d'ailleurs.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:ccivlt$d7f$
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je sais...
c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien faire avec ce qu'on a...
-- @+ Jessy Sempere - Access MVP
Tu sais bien qu'on va te plaisanter encore longtemps avec ça, comme les
trains d'ailleurs.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:ccivlt$d7f$1@muguet.sncf.fr...
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne
fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je
sais...
c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien
faire avec ce qu'on a...
Tu sais bien qu'on va te plaisanter encore longtemps avec ça, comme les trains d'ailleurs.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jessy Sempere [MVP]" a écrit dans le message de news:ccivlt$d7f$
Et oui et tu as toute mon admiration vu ton grand age... hi hi hi ;-)))))
Blague à part, c'est pas que je veux pas me recycler mais en gros je ne fais jamais de PC chez moi, tout ce que je fais, donc tout ce que je sais...
c'est au boulot et comme toutes la boîte et sous Office 97, il faut bien faire avec ce qu'on a...
-- @+ Jessy Sempere - Access MVP
Raymond [mvp]
Je trouve qu'elle est très bien cette petite procédure.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
Bonjour Raph,
Je te fais passer une procédure "moulinette" qui permet de vérifier la présence ou non des valeurs d'un champs d'une table dans n'importe quel champs d'une autre table. Cette procédure a un argument : le nom de la table dans laquelle on fait la recherche. A la sortie une msgbox indique les valeurs non présentes dans la table. Donc il suffit de relancer la proc pour autant de tables à vérifier, voire en l'adaptant un peu, automatiser pour n tables.
Dans cet exemple, j'ai supposé que Table1 n'avait qu'un seul champ, c'est pourquoi j'utilise rs1.Fields(0). Si dans cette table tu as plusieurs champs, adaptes l'indice - si ton champ categorie est le 4eme, ca donnera rs1.Fields(3)
Il faut charger la rérérence Microsoft DAO 3.x Object Library
A mettre dans un module standard. Appel par : VerifPresence "NomTableAVerifier" ou Call VerifPresence("NomTableAVerifier")
Sub VerifPresence(NomTable As String) ' NomTable désigne la table à vérifier ' NomTable contient n champs Dim bd As DAO.Database, Tableau() Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset Dim I As Long, J As Long, K As Long Dim Rows As Long, Cols As Long Dim tmpArray, Existe As Boolean Dim msg As String Set bd = CurrentDb ' table1 : table dont on veut s'assurer que les valeurs ' d'un champs sont présentes dans l'autre table Set rs1 = bd.OpenRecordset("Table1") ' table1 - 1 champs Set rs2 = bd.OpenRecordset(NomTable) ' table2 - n champs rs2.MoveLast: rs2.MoveFirst Rows = rs2.RecordCount ' nb d'enregistrements Cols = rs2.Fields.Count ' nb de champs tmpArray = rs2.GetRows(Rows) ' on récupère le jeu de table2 rs2.Close Set rs2 = Nothing While Not rs1.EOF Existe = False For J = 0 To Rows - 1 For I = 0 To Cols - 1 If rs1.Fields(0) = tmpArray(I, J) Then Existe = True Exit For End If Next I If Existe Then 'l'élément a été trouvé sur une ligne 'inutile de vérifier sa présence sur les autres Exit For End If Next J If Not Existe Then ' on stocke l'élément ReDim Preserve Tableau(K) Tableau(K) = rs1.Fields(0) K = K + 1 End If rs1.MoveNext Wend rs1.Close Set rs1 = Nothing bd.Close: Set bd = Nothing ' Affichage des éléments non trouvés dans NomTable msg = "Les éléments suivants sont absents" & vbCrLf msg = msg & "de la table " & NomTable & vbCrLf For I = 0 To K - 1 msg = msg & vbTab & " - " & Tableau(I) & vbCrLf Next I MsgBox msg, vbInformation Erase Tableau End Sub
Voila, si ca peut te dépanner.
A+ Eric
Je trouve qu'elle est très bien cette petite procédure.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de
news:XnF95205D6B5ACE8fframZZhotmailcom@207.46.248.16...
Bonjour Raph,
Je te fais passer une procédure "moulinette" qui permet de vérifier la
présence ou non des valeurs d'un champs d'une table dans n'importe quel
champs d'une autre table. Cette procédure a un argument : le nom de la
table dans laquelle on fait la recherche. A la sortie une msgbox indique
les valeurs non présentes dans la table.
Donc il suffit de relancer la proc pour autant de tables à vérifier,
voire en l'adaptant un peu, automatiser pour n tables.
Dans cet exemple, j'ai supposé que Table1 n'avait qu'un seul champ, c'est
pourquoi j'utilise rs1.Fields(0). Si dans cette table tu as plusieurs
champs, adaptes l'indice - si ton champ categorie est le 4eme, ca donnera
rs1.Fields(3)
Il faut charger la rérérence Microsoft DAO 3.x Object Library
A mettre dans un module standard.
Appel par :
VerifPresence "NomTableAVerifier"
ou
Call VerifPresence("NomTableAVerifier")
Sub VerifPresence(NomTable As String)
' NomTable désigne la table à vérifier
' NomTable contient n champs
Dim bd As DAO.Database, Tableau()
Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset
Dim I As Long, J As Long, K As Long
Dim Rows As Long, Cols As Long
Dim tmpArray, Existe As Boolean
Dim msg As String
Set bd = CurrentDb
' table1 : table dont on veut s'assurer que les valeurs
' d'un champs sont présentes dans l'autre table
Set rs1 = bd.OpenRecordset("Table1") ' table1 - 1 champs
Set rs2 = bd.OpenRecordset(NomTable) ' table2 - n champs
rs2.MoveLast: rs2.MoveFirst
Rows = rs2.RecordCount ' nb d'enregistrements
Cols = rs2.Fields.Count ' nb de champs
tmpArray = rs2.GetRows(Rows) ' on récupère le jeu de table2
rs2.Close
Set rs2 = Nothing
While Not rs1.EOF
Existe = False
For J = 0 To Rows - 1
For I = 0 To Cols - 1
If rs1.Fields(0) = tmpArray(I, J) Then
Existe = True
Exit For
End If
Next I
If Existe Then
'l'élément a été trouvé sur une ligne
'inutile de vérifier sa présence sur les autres
Exit For
End If
Next J
If Not Existe Then
' on stocke l'élément
ReDim Preserve Tableau(K)
Tableau(K) = rs1.Fields(0)
K = K + 1
End If
rs1.MoveNext
Wend
rs1.Close
Set rs1 = Nothing
bd.Close: Set bd = Nothing
' Affichage des éléments non trouvés dans NomTable
msg = "Les éléments suivants sont absents" & vbCrLf
msg = msg & "de la table " & NomTable & vbCrLf
For I = 0 To K - 1
msg = msg & vbTab & " - " & Tableau(I) & vbCrLf
Next I
MsgBox msg, vbInformation
Erase Tableau
End Sub
Je trouve qu'elle est très bien cette petite procédure.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
Bonjour Raph,
Je te fais passer une procédure "moulinette" qui permet de vérifier la présence ou non des valeurs d'un champs d'une table dans n'importe quel champs d'une autre table. Cette procédure a un argument : le nom de la table dans laquelle on fait la recherche. A la sortie une msgbox indique les valeurs non présentes dans la table. Donc il suffit de relancer la proc pour autant de tables à vérifier, voire en l'adaptant un peu, automatiser pour n tables.
Dans cet exemple, j'ai supposé que Table1 n'avait qu'un seul champ, c'est pourquoi j'utilise rs1.Fields(0). Si dans cette table tu as plusieurs champs, adaptes l'indice - si ton champ categorie est le 4eme, ca donnera rs1.Fields(3)
Il faut charger la rérérence Microsoft DAO 3.x Object Library
A mettre dans un module standard. Appel par : VerifPresence "NomTableAVerifier" ou Call VerifPresence("NomTableAVerifier")
Sub VerifPresence(NomTable As String) ' NomTable désigne la table à vérifier ' NomTable contient n champs Dim bd As DAO.Database, Tableau() Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset Dim I As Long, J As Long, K As Long Dim Rows As Long, Cols As Long Dim tmpArray, Existe As Boolean Dim msg As String Set bd = CurrentDb ' table1 : table dont on veut s'assurer que les valeurs ' d'un champs sont présentes dans l'autre table Set rs1 = bd.OpenRecordset("Table1") ' table1 - 1 champs Set rs2 = bd.OpenRecordset(NomTable) ' table2 - n champs rs2.MoveLast: rs2.MoveFirst Rows = rs2.RecordCount ' nb d'enregistrements Cols = rs2.Fields.Count ' nb de champs tmpArray = rs2.GetRows(Rows) ' on récupère le jeu de table2 rs2.Close Set rs2 = Nothing While Not rs1.EOF Existe = False For J = 0 To Rows - 1 For I = 0 To Cols - 1 If rs1.Fields(0) = tmpArray(I, J) Then Existe = True Exit For End If Next I If Existe Then 'l'élément a été trouvé sur une ligne 'inutile de vérifier sa présence sur les autres Exit For End If Next J If Not Existe Then ' on stocke l'élément ReDim Preserve Tableau(K) Tableau(K) = rs1.Fields(0) K = K + 1 End If rs1.MoveNext Wend rs1.Close Set rs1 = Nothing bd.Close: Set bd = Nothing ' Affichage des éléments non trouvés dans NomTable msg = "Les éléments suivants sont absents" & vbCrLf msg = msg & "de la table " & NomTable & vbCrLf For I = 0 To K - 1 msg = msg & vbTab & " - " & Tableau(I) & vbCrLf Next I MsgBox msg, vbInformation Erase Tableau End Sub