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 :

Code Pour "Gestions des tables liées"


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut Code Pour "Gestions des tables liées"
    Bonjour,

    Je suis en train de faire le Menu (switchboard) pour une base associative en relation avec une base internet.
    Je souhaiterai que l'utilisateur puisse mettre à jour la liaison d'une base Access avec un fichier Excel par une commande dans le Menu ou par l’intermédiaire d'une macro plutôt que par la barre d'outils ("Données externes - Gestionnaires de Tables liées") avec la recherche de l'emplacement du fichier "xls"
    Est-ce possible ?
    J'ai cherché dans la Faq, mais malheureusement je n'ai pas trouvé.
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Pourrais-tu préciser quelle version de Access tu utilises ?

    Ensuite, ce n'est pas une action 'standard' de Access donc tu ne trouveras pas dans les assistants quelque chose qui le fasse.

    Tu peux 'éventuellement' (mais je ne conseille pas vraiment) montrer à tes utilisateurs comment relinker une base via le gestionnaire de table liée.

    Sinon il faut faire une formulaire et un peu de code VBA qui va permettre cela.

    Comme la solution dépend en partie de la version je ne peux guère entrer plus dans les détails.

    Si tu veux faire des recherches par toi même cherche RefreshLink et une partie solution ne devrait pas être loin.

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Je travaille avec Access 2010, mais la base de donnée a été faites sous access 2003. Elle n'a pas été transformée sous la nouvelle version car certain utilisateurs utilisent toujours office 2003.

    Pour notre organisation, nous avons décidé que la base principale serait Access. La base du site Internet (règlement en ligne) serait secondaire pour les pb d'envoi bulletin et fiches fiscales. (95% des membres règlent par chèque)

    A partir d'access, nous faisons donc un export des données pour mettre à jour le site (fonction sql - phpMyadmin) et nous ressortons régulièrement les nouveaux inscrits à incorporer à la base access.
    Le fichier d'import se nomme ImportInternet.xls et comporte une bonne vingtaine de champs.

    Sous Access 2010 on aune barre d'outils dédiée au "Données extérieures" et on créé ainsi une Table liées avec le fichier Excel. Mais cette dernière nécessite une action de mise à jour, chaque fois qu'elle est modifiée. D'où ma question !

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    OK si ton fichier porte toujours le même nom et est toujours à la même place, fait un test avec cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public sub RafraichirExcel()
       dim db as dao.database:set db=currentdb
       db.tabledefs("NomTaTableLieeSurXls").refreshlink
       set db=nothing
    end sub
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Je te remercie beaucoup, mais je ne suis pas assez calé; Je suppose qu'il me faut mettre ce code dans un module et que j'appelle ce module par un menu ??

    J'ai fait ainsi, mais j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.TableDefs("ImportInternet.xls\ImportInternet$").RefreshLink
    J'ai aussi testé en vain avec la même erreur "3265" lorsque je mets le chemin complet : ("c:\users\Phyl\Documents\Access\ImportInternet.xls\ImportInternet$")

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    ImportInternet.xls\ImportInternet$, est-ce le nom de table liée dans Access ? Je parle bien du nom de la table tel que visible dans la liste des tables une fois le classeur lié, pas le nom du classeur excel sur le disque.

    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    La liste des tables la table liées sous excel se nomme "ImportInternet";

    "ImportInternet.xls\ImportInternet$" est le nom du fichierExcel et de sa feuille tel que désigné dans le liens lors de la première liaison.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je pense que ImportInternet est ce qu'il faut utiliser.

    A+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    C'est super, cela marche. Un grand merci.

    En fait, au clic il ne se passe rien, mais en renommant le fichier, ou en modifiant un champ, la mise à jour se fait bien.

    Seul problème il faudra que le fichier ImportInternet.xls soit placé strictement dans le même répertoire. N'y a t'il pas la possibilité de toujours demander le répertoire où se trouve le fichier Excel ?

    D'autre part n'y a-t'il pas la possibilité de faire paraître un sablier et message une fois la mise à jour des champs ?

    Merci beaucoup de ton aide

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Seul problème il faudra que le fichier ImportInternet.xls soit placé strictement dans le même répertoire. N'y a t'il pas la possibilité de toujours demander le répertoire où se trouve le fichier Excel ?
    Oui c'est possible mais cela nécessite plus de code et plus de travail car il va falloir modifier la chaîne de connexion.

    Voici les étapes pour arriver à cela :
    Aller dans du code
    Aller dans la fenêtre d'exécution immédiate ([Ctrl][G])
    Taper debug.print Currentdb.TableDefs("ImportInternet").connect [Enter]Copier la ligne qui va s'afficher dans un coin pour plus tard.

    après il faut modifier ton code pour recevoir le nouveau chemin et nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public sub RafraichirExcel(prmNomCompletExcel as string)
       dim db as dao.database:set db=currentdb
       dim t as dao.tabledefs("ImportInternet")
       t.connect="Debut de la chaîne de connexion sans le nom" & prmNomCompletExcel & "fin de la chaîne de connexion sans le nom"
       call t.refreshlink
       set t=nothing
       set db=nothing
    end sub
    Pour comment offrir le possibilité de choisir ton fichier je te reviens un peu plus tard.

    A+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 17
    Points
    17
    Par défaut
    Je te remercie beaucoup, mais absent actuellement jusqu'à mi mai. Je ne pourrais tester qu'à ce moment là.

Discussions similaires

  1. QGIS : lenteur pour afficher les listes des vues dans "Ajouter une table PostGIS"
    Par fafa63 dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/07/2014, 19h04
  2. [AC-2007] Création bouton pour activer gestion des tables liées
    Par ouahab dans le forum Access
    Réponses: 1
    Dernier message: 12/10/2012, 09h59
  3. [AC-2003] Gestion des Tables liées
    Par ted the Ors dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/11/2009, 08h50
  4. [AC-2003] Disparition de la gestion des tables liées
    Par AndréPe dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/10/2009, 10h40
  5. Base fractionnée : gestion des tables liées
    Par hannii dans le forum Access
    Réponses: 5
    Dernier message: 26/02/2007, 11h02

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