|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Bonjour à tous,
Je ne suis pas développeur (désolé !) mais un utilisateur "avec de l'expérience" : je pourrais donc à l'occasion être utile. Je consulte régulièrement votre forum pour lequel j'ai franchi le pas de l'adhésion depuis peu. Je maintiens une base d'indices INSEE pour une communauté d'acheteurs et de chefs de projets. L'ensemble des indices maintenus en catalogue est stocké dans une grosse table "INSEE" et les caractéristiques de chacun des Indices font l'objet d'une table "Nomenclature". La Table "Nomenclature" comprend notamment les champs "IdBANK" : numéro Insee de l'indice; "SIGLE" : identifiant maison de l'indice et un champ "Choix" sous forme de liste de choix avec les occurrences "retenu" ou "exclu". Je cherche un code vba qui me permettrait de créer une nouvelle table à partir de la table INSEE et dont le nombre et le choix des indices la composant seraient dépendant du critère "retenu" dans le champ "Choix" de la table "Nomenclature". Pourriez-vous m'aider ? PS : Ci-jointes les tables "INSEE" et "Nomenclature" |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut,
Pourquoi du VBA sur des fichiers Excel alors que je pense qu'une requête sur des Tables Access devrait être beaucoup plus facile à mettre en oeuvre.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Tibat31520 et Heureux-oli,
Juste pour compléter la réponse de Heureux-oli : tu peux créer une base Access avec des tables liées Excel. Il s'agit là de liaison, donc la mise à jour du fichier Excel cible entraîne la "mise à jour" immédiate du fichier Access lié (une sorte de raccourci). Je ne connais pas ton niveau Access. Si besoin, les tutos, FAQ et forum regorgent de formation d'excellente qualité. Il te faut des connaissances dans :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Les fichiers xls sont extrait de ma BD jointe zippée.
La table INSEE contient bcp trop d'indices (IdBANK dans Nomenclature). Mon idée est tjs la même : Réaliser une requête ou une nvelle table dont le nombre de champs dépendrait des éléments retenus une autre table "Nomenclature" par le biais du champs "Choix" de cette dernière table, de type binaire (1 /0 ou encore "retenu" / "exclu). Il est aisé de filtrer les enregistrements avec des critères mais comment le faire sur des colonnes ? (qry : ttes les col. sauf...) J'espère vraiment une réponse de votre part. Alors je vous dit à bientôt ! |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Tibat31520,
Si j'ai bien compris, le problème de base est d'établir un rapprochement avec le nom du champ de la table INSEE et les valeurs de IdBANK de la table Nomenclature (IdBANK contient le nom des champs de INSEE). L'idéal serait de transformer la table INSEE actuelle : - Année - Mois - AnnéeMois - AnnéeTrim - 001532540 (contient la valeur de 001532540) - 000604030 (contient la valeur de 000604030) ... en INSEE_Retravaillée : - Année - Mois - AnnéeMois - AnnéeTrim - Code (001532540, 000604030, etc...) - Valeur (valeur de 001532540, valeur de 000604030, etc...) De cette manière, la liaison entre INSEE et Nomenclature s'effectue aisément. Pour obtenir INSEE_Retravaillée à partir de INSEE, il faut du code qui "balaye" la liste des noms de champs de INSEE pour alimenter Code de INSEE_Retravaillée et la valeur des champs de INSEE pour alimenter Valeur de INSEE_Retravaillée. Je ne connais pas VBA mais un codeur peut, peut-être, donner un coup de main.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Bonjour,
Chacun selon ses moyens. J'ai bien compris l'idée de Richard_35. Elle devrait aboutir à une table de trois champs utiles, qui pourrait se résumer ainsi :"AnnéeMois", "Code_1X" et "Valeur_1X". Je remercie également Heureux-oli, qui tente à sa façon de me guider sur les chemins de la connaissance DAO mais je pense que j'aurai rejoins l'orient éternel avant davoir réalisé trois pas cohérents en matière de code. J'ai donc essayé d'avancer autrement.
Merci de vos contributions PS: Zip mis à jour |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Il me semble que tu veux aller trop vite.
Pour arriver au résultat que tu souhaites et s'ouvrir la porte pour d'autres besoins, il faut des tables exploitables par des requêtes : donc, des valeurs affectées à des champs et non pas des noms de champs étant, eux-mêmes, une valeur. Comme je te l'ai dit, je ne connais pas VBA, mais il semble que tu as trouvé comment récupérer le nom des champs (res.Fields(0) => res.Fields(n), si je ne m'abuse). Donc, il est facile de créer la table INSEE_Retravaillée : - Année - Mois - AnnéeMois - AnnéeTrim - Code (res.Fields(0) => res.Fields(n)) - Valeur Une fois la table INSEE_Retravaillée bétonnée, tu peux effectuer toutes les analyses que tu souhaites.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Bonjour à tous,
je n'ai pas poursuivi sur l'idée de Richard 35 mais j'ai plutot tenté d'adapter du code glanné au fil du forum.
Code :
Sinon j'ai vérifié que dans la fenètre Exécution que ? QRY donnait le résultat attendu i.e la bonne rédaction de la requête Merci de votre aide |
||
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() Chercheur Inscription : juin 2011 Messages : 150 ![]() |
Bonjour,
Si j'ai bien compris votre demande, voici quelques modifs sur votre code. L'erreur finale que vous avez s'explique par votre requête qui n'a pas de destination (nouvelle table, mise à jour ...). Dans l'exemple suivant une nouvelle table est créée automatiquement avec les données de la requête. En espérant que cela vous aide. Bcdt, Florian Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Merci à fbtsra.
vous m'avez aidé. Votre résultat est je pense ce que proposait Richard 35. Deux inconvénients à cette proposition : - je ne sais pas comment finalement j'aurais pu m'en servir et - deuxièmement : un pb avec l'entête des colonnes de la table résultat (TEST), ils sont du type "Exprxxx". En revanche, je suis revenu à mon code initial pour la partie concaténation et j'ai enlevé le "INSEE. dans la text de la variable QRY et j'ai le résultat attendu. Petit plus. j'aimerai pouvoir créer plusieures tables à partir de ce code et donc paramétrer le nom de la table destination. Comment m'y prendre ? PS : voici le code qui correspond à mon résultat attendu : Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Membre confirmé
![]() Chercheur Inscription : juin 2011 Messages : 150 ![]() |
Par exemple :
Code :
Florian |
||
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Thierry BatailleChargé d'affaire Inscription : juin 2011 Messages : 8 ![]() |
Merci Florian ainsi qu'à tous.
Vous avez répondu à mes questions Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com