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

Macros et VBA Excel Discussion :

Mise à jour de fichier excel via une BDD Access


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut Mise à jour de fichier excel via une BDD Access
    Bonjour,

    J'ouvre ce post pour solliciter votre aide.

    Contexte:
    En effet, j'ai un fichier excel dans lequel différentes manipulation ont été faites afin de permettre la comparaison entre deux produits.
    Chaque produit correspond à un ensemble de composants. Ces composants peuvent être à la fois présent dans la composition d'un produit et d'un autre. L'objectif est de déterminer le nombre de communs (composants en communs que différents produits peuvent avoir).

    Problématique:
    Toutes les informations sur les produits et leurs composants sont disponibles dans une BDD Access, de nombreuses modification sont effectuées sur cette base. Ajout ou suppression d'un produit, d'un composant... Afin que mon fichier excel soit en corrélation avec cette base, j'aimerais pouvoir le mettre à jour.
    Pour ce faire je voudrais que les colonne "1" et "2" de mon onglet "produits" puisse être mis à jour grâce à ma base. Par conséquent l'onglet "matrice" qui fait références à tous les produits soit également mis à jour. Je sais que lorsque l'on a un TCD (tableau croisé dynamique) on peut faire appel à une source de données externe et actualiser le TCD. Mais est-il possible de le faire sans pour autant avoir à créer un TCD ?

    Merci d'avance.

    Fichier excel: http://www.cjoint.com/c/EFlgAFrohCM
    BDD Access compréssé: http://www.cjoint.com/c/EFlgOknFDIM

    N.B.: J'ai posté ce sujet sur un autre forum, n'ayant pas eu de réponse, je me permet de le poster aussi sur ce forum en espérant avoir vos avis.

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Il faut lier tes colonnes à ta source : cela semble être le cas car je vois des liaisons (3 qui semblent identiques). Excel rapatriant les données dans un tableau, les formules accolées suivent.

    Il suffit de paramétrer le timing de mise à jour de la liaison : à l'ouverture du fichier, toutes les heures... puis de relancer ta macro de construction de matrice.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Tout d’abord merci de ta réponse.
    Qu'entends-tu par lier les colonnes ? Excel as une "application" qui le fait automatiquement ? Ou dois-je le faire via une macro (ce que j'aimerais éviter) ? Peux tu être un peu plus explicite ?

    Cdlt

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    Dans un onglet vierge : Données, Zone Données externes (à gauche) : depuis Access. Sélectionner le fichier Access puis la table ou requête adéquate.
    Laisser Tableau et $A$1, cliquer sur propriétés et régler l'actualisation soit à l'ouverture du fichier soit toutes les n minutes, voire les 2, puis valider.

    Ajouter les colonnes de formules. Elle s'imbriquent dans le tableau et suivront donc le nombre de lignes de la source.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Re & Merci beaucoup,
    J'ai bien effectué ce que tu m'as dis et ça fonctionne.
    J'ai donc bien toutes mes références dans mon onglet "produits" qui sont téléchargées de puis ma BDD Access.
    Dans l'onglet "composants" le tableau que je désire avoir est scrupuleusement le même que dans l'onglet "produits".
    Cependant,
    -La première colonne (A:A) contenant toutes mes références composants
    -La seconde colonne (B:B) contenant toutes mes références de produits correspondantes aux composants

    Le tableau étant trié sur la colonne "A" de A à Z.

    J'aimerais que ce tableau puisse ce mettre à jour automatiquement dès lors qu'il y a une modification dans le tableau de l'onglet "produits"

    Autrement dit :
    1. Le tableau dans "produits" dépend d'Access (C'est fait et fonctionnel, merci !)
    2. Le tableau dans "composants" dépend du tableau dans "produits" avec les préférences que j'ai cité ci-dessus (A faire)

    As-tu une solution que je pourrais mettre en place (formule, macro, manip, astuce...) ? L'important est de ne pas avoir à le toucher et qu'il se mette à jour tout seul..

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    regardes le fichier joint; surtout, dézip la totalité du répertoire sur tin disk dur!
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip TDC.zip (42,9 Ko, 124 affichages)

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Si c'était pour moi, je créerais 2 requête Access sur la table :
    • une avec les colonnes Ref_Produit et Ref_Compo triées sur Ref_Produit
    • l'autre sur les colonnes Ref_Compo et Ref_Produit triées sur Ref_Compo


    et j'établirai les 2 liens comme expliqué dans mon précédent post.

    C'est que qui sera le plus souple et le plus logique et sans risque de désynchronisation des 2 listes.

    Pour info, à partir du moment où on utilise des tableaux, on peut trouver le nombre de lignes de façon plus simple et plus sûre en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("produits").ListObjects(1).ListRows.Count
    renvoie le nombre de ligne hors titre

    Edit : salut rdurupt , plus rapide et plus technique mais je il n'est pas sûr que cela réponde à la question qui n'est pas de faire un TCD...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  8. #8
    Invité
    Invité(e)
    Par défaut
    salut 78chris,


    pas vraiment technique , car le module de classe est une boite à outils il suffi de maintenir le click gauche de la sourie sur les deux module et le faire glisser de mon projet vers son projet pour les copier; après l'exemple suffit pour comprendre!

    de plus je l'ai bien vendu il y à pleins d'exemple sur ce forum!

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    Ce n'était pas une critique, au contraire : je trouve les modules de classe très Classe
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  10. #10
    Invité
    Invité(e)
    Par défaut
    T'inquiète pas je ne le pensais pas, de plus si prend la mouche pour ça!

    Les modules de classe simplifie plus la vie qu'ils ne l'a complique!

  11. #11
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    iliaseyah :

    A noter que si la matrice n'est pas indispensable, il est possible par requête d'obtenir dans Access cette liste en 3 colonnes

    Produit, Produit, nombre de composants communs.

    Sinon à partir de cette requête avec un TCD on peut créer la Matrice : ainsi le TCD puise directement dans la base sans importation dans un onglet et sans VBA.

    rdurupt : non, non aucune mouche mais j'ai, moi, du mal à créer les modules de classe d'où mon admiration.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Effectivement ma solution ne répond pas à la question,car il s'agit de ce passer de TDC!

    Je tenterai demain de te concocter un exemple,si le temps le permet, je veux dire mon emploi du temps!

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Bonjour 78chris,

    Citation Envoyé par 78chris Voir le message
    Si c'était pour moi, je créerais 2 requête Access sur la table :
    • une avec les colonnes Ref_Produit et Ref_Compo triées sur Ref_Produit
    • l'autre sur les colonnes Ref_Compo et Ref_Produit triées sur Ref_Compo


    C'est que qui sera le plus souple et le plus logique et sans risque de désynchronisation des 2 listes.
    Oui je pense que ce serait la méthode la plus adapté pour effectuer ce que je veux mais je ne comprend comment peut-on réaliser une requête directement sur une table Access depuis excel. Est ce que tu me détailler un peu la procédure (les requêtes à utiliser) afin de télécharger les données depuis ma base de données Access.

    Pour répondre à rdurupt:
    Tout d’abord, merci de ta réponse. Mais je ne peux pas utiliser ta méthode, j'ai fais exactement la même chose précédemment mais malheureusement ce n'est pas l'idéal. Je t'envoie mon fichier avec le TCD que j'avais créer (dans ma matrice TCD, lorsque qu'un composant est présent dans la composition d'un produit à l'intersection on a un "1", pour connaitre le nombre total de communs on compte tout simplement le nombre de "1").
    Ancienne version de fichier non-retenue: Pièce jointe 180389

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par iliaseyah Voir le message
    Bonjour 78chris,
    Oui je pense que ce serait la méthode la plus adapté pour effectuer ce que je veux mais je ne comprend comment peut-on réaliser une requête directement sur une table Access depuis excel. Est ce que tu me détailler un peu la procédure (les requêtes à utiliser) afin de télécharger les données depuis ma base de données Access.
    ce que te propose 78chris c'est de créer une requête dans Access (Onglet Requête dan Access) qui te restitue les valeurs que tu veux afficher dans Excel. puis se sélectionner ta requête comme si c’était une table sql="Select * from Requête1;"

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Bonjour rdurupt,
    Merci pour ta réponse!

    D'accords mais depuis Excel cette manip n'est pas possible?
    Je t'avoue que je suis pas très à l'aise sur Access.
    Et ce que j'ai le plus de mal à réaliser ce sont les requête.

    Demande:
    Est ce que tu pourrais me donner la forme de cette fameuse requête (que j'adapterai à mon cas), qui me permettrais de récupérer mes couples:
    Ref composant x Ref Produits
    Et de les trier de A à Z sur la colonne Ref composant, dans une feuille bien précise de mon fichier Excel ?


    Merci Messieurs, c'est agréable de pouvoir compter sur des personnes comme vous quand on a besoin d'un petit coup de main.

  16. #16
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Voici en images :
    la requête dans Access
    Le TCD dans Excel : utiliser max comme calcul statistique afin de faire la Mise en forme conditionnelle plus facilement. Bâti directement sur la requête Access sans passer par un onglet affichant les résultats de celle-ci
    La MFC
    Images attachées Images attachées    
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Ah ok, tout est plus clair!!
    Finalement l'utilisation des TCD s'avère être judicieuse dans ce cas !

    Mais ta base de données à été construite d'une manière différente de la mienne..

    Dans ma BDD j'ai seulement une table avec comme champs:
    -Num (clé primaire, automatique)
    -Ref_produits
    -Ref_compsants
    -Valeur (1 par défaut)

    Aucune relation, aucune requête.

    J'ai l'impression qu'en mettant en place une BDD bien configuré, le résultat coule de source..
    Est ce que je peux savoir comment tu as construit ta BDD stp ?

    Utilises-tu des macros pour arriver au résultat final (Matrice des communs) ?

  18. #18
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Comme on peut le voir sur l'image j'ai utilisé ta table nommée communs dans une requête (utiliser une base de données sans faire de requête, c'est comme acheter une Ferrari et la laisser au milieu du garage...)

    J'ai placé 2 fois la table dans la même requête.

    Si tu ne sais pas faire : va dans l'onglet Créer, Création de requête, une fenêtre s'ouvre : cliques sur fermer. En haut à gauche clique sur le bouton SQL et colle ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Communs.Ref_Produit, Communs_1.Ref_Produit, Count(Communs_1.Ref_Compo) AS CompteDeRef_Compo
    FROM Communs LEFT JOIN Communs AS Communs_1 ON Communs.Ref_Compo = Communs_1.Ref_Compo
    GROUP BY Communs.Ref_Produit, Communs_1.Ref_Produit
    HAVING (((Communs_1.Ref_Produit)<>[Communs]![Ref_Produit]));
    à la place du SELECT; présent dans la fenêtre.
    Cliques ensuite le le 1er bouton à gauche : tu vois le résultat.
    Enregistre la requête avec un nom parlant : c'est ce que tu utiliseras pour le TCD. Dans la 1ère fenêtre de création de TCD utilise données Externes, Choisir la connexion, bouton Rechercher pour accéder à ta base.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Re,

    Merci, vraiment c'est fabuleux la puissance des requêtes. Ne pas les utiliser c'est comme avoir un Ferrari sans moteur !!
    Ou puis-je trouver des cours en ligne sur les requêtes Access, ce genre de chose ?

    Encore merci !!!!!

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Re,

    Je me permets de te déranger encore une fois.
    Est ce que tu sais si il est possible d'interroger la matrice pour récupérer le nombre de communs dans une cellule d'une feuille quelconque (exemple:"A3") pour deux produits (qu'on aura défini préalablement dans deux cellules distinctes exemple"A1" & "A2"), avec la formule INDEX-EQUIV ou une autre du même genre ?

    Merci par avance.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [AC-2010] Ouverture d'un fichier excel via une base access
    Par yliadis dans le forum Access
    Réponses: 4
    Dernier message: 07/10/2014, 16h47
  2. [AC-2003] Erreur importation fichier Excel dans une BDD
    Par Contrec dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/08/2009, 14h59
  3. extraction d'un fichier excel dans une BDD SQL server
    Par saraenim dans le forum Développement
    Réponses: 4
    Dernier message: 03/10/2008, 13h58
  4. Réponses: 45
    Dernier message: 14/02/2008, 15h41

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