IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

transformer une table en une autre


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut transformer une table en une autre
    Bonjour,

    J'ai une table (table1) avec 4 champs qui a la forme suivante :
    nom_commune nb_salaries_secteur1 nb_salaries_secteur2 nb_salaries_secteur3
    a 1 2 3
    b 4 5 6

    Je souhaite créer, à partir de la table1 une nouvelle table (table2) qui a la forme :
    nom_commune secteur nb_salaries
    a secteur1 1
    a secteur2 2
    a secteur3 3
    b secteur1 4
    b secteur2 5
    b secteur3 6

    Je cherche à automatiser cette manipulation qui pourrait se faire avec une requête mise à jour (mais "manuellement"), car en réalité, j'aurai environ 700 secteurs...

    Merci pour votre aide !
    A bientôt
    Pascal

  2. #2
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Data Consultant
    Inscrit en
    Juillet 2013
    Messages
    2 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Data Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2 939
    Points : 88 211
    Points
    88 211
    Billets dans le blog
    2
    Par défaut
    Salut,
    Si c'est une opération que tu vas effectuer une bonne fois pour toute, alors tu peux obtenir ta table en passant par des requêtes.
    Tu peux par exemple créer 3 requêtes ayant la même structure QryNbi avec les champs NomCommune, Nbi, Secteur_i où Nbi est le nombre de salariés pour le secteur_i, i=1,2,3 (si bien sûr tu as seulement 3 secteur, sinon si le nb de secteurs est indéfini, il va falloir utiliser une méthode plus raffinée .
    Secteur_i est une expression qui prend la valeur Secteur1, Secteur2, Secteur3 selon la requête QryNb1,...

    Et enfin! Vraiment enfin! tu fais une requête UNION pour regrouper le tout, avant de copier le résultat de la requête dans ta nouvelle table. Pas raffiné, mais au cas où tu trouves pas mieux, ça peux faire l'affaire.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Salut et merci pour ta réponse. Effectivement, ta méthode marche bien mais n'est pas envisageable si j'ai 700 secteurs ! Faut-il écrire du code pour pouvoir faire ça, un sorte de boucle ?

    Merci pour votre aide !

    Pascal

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Hobby man
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Hobby man

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Effectivement, il faudrait
    - créer la nouvelle table vide
    - compter le nombre de secteur (ou l'indiquer manuellement à la boucle si ce travail est one shoot
    - boucler autant de fois que de secteur
    - effectuer une requête action "ajout", semblable à ce qui est décrit plus haut en simple requête, et qui va chaque fois passage de boucle remplir la table vide.

    Pour info, le squelette de la requête en question... que je construis toujours dans une variable avant de la lancer
    monsql = "INSERT INTO NvlTable ( Champs 1, Champs2, ChampsN ) "
    monsql = monsql & " SELECT ChampsA AS Champs 1, ChampsB AS Champs2, ChampsX AS Champs N"
    monsql = monsql & " FROM TableOld ..."
    monsql = monsql & " WHERE ... " 'si filtre est à prévoir
    monsql = monsql & " GROUP BY " 'si regroupement
    monsql = monsql & " HAVING " 'une autre forme de filtre

    'msgbox monsql 'permet de vérifier ce qu'on a construit à l'écran
    'debug.print 'permet de vérifier ce qu'on a construit par écrit

    DoCmd.SetWarnings (False) 'Désactive les messages de sécurité
    DoCmd.RunSQL monsql 'Lance la requête inclue dans la variable construite ci avant
    DoCmd.SetWarnings (True) 'Réactive les message de sécurité



    Bien sûr, la requête se doit d'être dynamique et d'intégrer en variable le nom du secteur pour lequel tu recherches les infos.
    Perso, j'utilise encore le mode construction de l'onglet requête, puis je constate le résultat en mode SQL et j'adapte cette requête pour la rendre dynamique (et compatible VBA).

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Vous n'aurez pas 700 secteurs puisque le nombre de champs par table est limité à 255.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo