{Access} gérer plusieurs bases avec 1 menu gén [Résolu/Fermé]

Signaler
-
 Zebulon -
Bonjour à tous,

Je voudrais savoir s'il est possible de gérer plusieurs bases ACCESS, de structure identique qui ne contiennent que les tables, avec un seul menu général? (base qui contient : requêtes, formulaires, états et macros)

En gros, j'ouvre la base qui contient mon menu général et je choisis la base dans laquelle se trouvent les tables sur lesquelles je veux travailler. (bénéfice, en cas de modification, je ne modifie qu'une seule base)

Si vous avez des idées je suis preneur.
Zebulon

12 réponses


Salut,

L'idée est plaisante... néanmoins, les menus, reports et dialogues sont dans une base de données. Si tu veux offrir x versions différentes d'une base de données avec les mêmes formulaires, requêtes etc, tu vas devoir tout multiplier par x.

Ta base de départ, celle qui offre le choix d'une base parmi x, devrait certainement démarrer Access (une nouvelle fois) avec en paramètre le nom de la base choisie par l'utilisateur. Chacune des base choisissables par l'utilisateur devra peut-être avoir avant l'instruction de fin Démarrer Access (encore une fois!) avec en paramètre le nom de la base de départ.

Je te laisse vérifier que les bases se succèdent au lieu de s'appeler. Tu seras à même alors de construire proprement ton projet.
BONJOUR,

Merci pour la réponse.

Mais mon problème est de pouvoir choisir lors de l'ouverture de la base qui contient les requêtes, formulaires, états et macros s'il est possible avec une instruction ou une macro de choisir quelles tables seront liées à cette base de données.

Est-ce possible ou pas.

Merci pour toutes idées.

Bonne soirée
Zébulon
Pourquoi ne pas créer le tableau de bord (l'accueil) en excel? Et de là ouvrir les bases et tables distinctes sous access?
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Bien qu'il ne soit pas recommandé d'enchérir sur des vieux messages, je réponds à la question :

- le tableau de bord en excel ne peut pas contenir des formulaires, états ou macro access
- il est possible de faire ce qui est demandé en mettant à jour, via VBA, les attaches de tables pour pointer sur le bon fichier .mdb
Messages postés
1040
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
1 août 2014
111
Bonjour ZEBULON,

Access fournit une fonctionnalité proche de ce que vous cherchez.
Première chose à faire : Une sauvegarde

Ensuite :
- Outils
- Utilitaire de base de sonnées
- Fractionnement d'une base de données

Résultat : 2 bases de données sont créées
- L'une contient tout ce qui n'est pas une table
- L'autre contient strictement toutes les tables

Pour de plus amples informations, saisir "fractionner" dans l'aide intuitive via la touche F1


Cordialement
Bonsoir,

Merci, Jean Jacques pour ta ta réponse, mais mes bases sont déjà divisées en deux. D'un coté différentes bases qui contiennent les tables (dont la structure est identique pour toutes ces bases) que je cherche à lier suivant les besoins à la base qui content les requêtes, formulaires, états et macros.

une macro ou une instruction VB sont-il une solution ?

Bonne soirée
Zébulon
Messages postés
1040
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
1 août 2014
111
Bonjour ZEBULON,

Il y a sans doute une ou des solutions via VB ou autre, mais, à ce niveau, je ne maîtrise pas.

Dans ce cadre une visite de :
https://access.developpez.com/

Ne saurait nuire.

Bonne journée
Bonjour Blux,

Merci de l'intérêt pour la question, mais j'ai laissé tomber le problème. Je gère mes bases indépendamment les unes des autres.
Mais si quelqu'un un jour a la réponse je suis preneur.
Zébulon.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Je viens de l'expliquer, si tes tables ont le même nom et qu'elles sont à choisir dans des bases différentes, en utilisant les attaches en vba tu pourras choisir dans quel fichier mdb tu iras taper...
Tu veux un exemple ?
Bonsoir,

Si j'en crois ton message, tu serais en mesure de résoudre mon problème!
Je résume la situation. J'ai plusieurs tables, de structures identiques (acquéreurs, lots, planning, gestion, etc...) mais situées dans des bases distinctes les unes des autres, (SCI001, SCI002, SCI003, etc...), J'ai une base d'exploitation dans laquelle se trouve : les requêtes, formulaires, états, macros.
Je désirerais savoir s'il est possible d'avoir une based'exploitation qui pourrait choisir lors de son ouverture ou par choix ultérieur sur quelle base aller choisir les tables à exploiter.
ex : tables de la SCIxxx avec des requêtes, formulaires, états, macros situés dans la base d'exploitation.
J'espère avoir été assez clair dans mes explications.
Donc, si tu as un exemple concret, je suis preneur. ;D)
Bonne soirée,
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Colle ce code sur un bouton et tu verras la liste de tes tables, avec le nom de la base à laquelle elles sont liées :

Dim Db As Database
Dim Tb As TableDef
Set Db = CurrentDb
For Each Tb In Db.TableDefs
    If Left(Tb.Name, 4) <> "MSys" Then
        MsgBox Tb.Name & "--" & Tb.Connect
    End If
Next

Si tu veux ensuite modifier la base de rattachement, il te suffit de modifier la propriété connect de chaque table et de faire un refreshlink :

Dim Tb As TableDef
Set Db = CurrentDb
For Each Tb In Db.TableDefs
    If Left(Tb.Name, 4) <> "MSys" Then
        MsgBox Tb.Name & "--" & Tb.Connect
        Tb.Connect = ";DATABASE=C:\mabase.mdb"
        Tb.Refreshlink
    End If
Next

Reste à savoir comment tu vas gérer les chemins, le plus simple étant de les stocker dans une table de ta base qui contient les requêtes, formulaires et autres mais sans la lier à aucune base. Tu iras faire ton choix via un dlookup pour modifier tes attaches, après avoir proposé de faire le choix de la base vie une liste déroulante...

Ca irait comme démarche ?
Bonsoir,

Je viens de lire ta réponse, l'idée me parait très intéressante mais il me faudrait quelques explications supplémentaires sur la manière de procéder.
Les lignes de codes que tu m'indiquent sont à coller dans un module afin de les lier à un bouton?
Comment stocker les chemins dans une table, sous forme de liens hypertexte ou autre.
Si tu avais un petit schéma à me proposer cela serait très sympa de ta part.
Je ne suis pas un grand utilisateur de VBA.
En tous cas merci de l'intérêt porté à mon problème, je pense que tu tiens une bonne piste.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
En chargeant ce lien tu vas récupérer un exemple de ce qu'on peut faire :

http://www.divshare.com/download/15971236-6a4

En décompressant dans le même répertoire, tu trouveras 4 bases access :

- trois bases nommées Choix_dataSCI001, ...SCI002 et ...SCI003.mdb
- une base nommée Choix.mdb, que tu lanceras, elle t'ouvrira un formulaire avec une zone de liste où tu pourras sélectionner 3 noms. Après sélection, s'affichera le lien actuel et on te posera la question de savoir si tu veux mettre à jour les liens entre les deux bases.

Les noms des trois bases sont dans la table, et je prends le chemin courant où est stockée la base choix.mdb pour considérer que les fichiers de données y sont aussi, mais on peut faire comme on veut.

Je n'ai mis aucune donnée dans les tables, tu pourras le faire pour voir si les attaches fonctionnent correctement.
Bonjour,

Un grand merci pour ton exemple de bases. Je les ai testées sur mes bases l'essai à l'air concluant.

J'essayerai un test grandeur nature dans la semaine et je te tiens au courant. Mais à priori c'est tout à fait ce que je recherchais.
Cordialement.
Bonsoir Bluz,

J'ai testé ton programme avec mes bases, tout à l'air de bien fonctionner. Par contre, je voudrais savoir :
1°) est-il possible de remplacer les messages "Chemin ......." et "Voulez vous mettre à jour............" qui apparaissent pour chaque table par un message avec choix oui ou non et confirmation "attention vous allez mettre à jour toutes les tables liées" ?
2° pourrais tu me donner quelques explications sur les instructions de la macro et leur mise en oeuvre ?

Je tiens à ta disposition, si tu le désires, un modèle de la base générée avec ta base "choix.mdb"

Bonne soirée et encore merci ta solution m'ouvre de belles possibilités.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
1°) On peut faire ce que l'on veut, le code est modifiable à l'envi.
J'ai mis un choix Ok-Annuler (plutôt qu'un choix oui-non), j'ai aussi rajouté un message de fin de procédure.

2°) Principes de fonctionnement :

- on dispose d'une table non attachée stockée dans la base (table 'locale', nommée T_SCI'), elle comprend deux champs : le premier (nommé Nom_SCI) est le nom de la base que l'on proposera dans une liste déroulante, le deuxième (nommé Chemin) est le nom physique du fichier .mdb auquel on rattachera les tables après le choix.
- une liste déroulante (nommée Chx_SCI) qui va chercher tous les premiers champs de la table 'locale' pour les proposer au choix de l'utilisateur.
- une fois le choix effectué, une procédure en vba, affectée à la propriété 'sur changement' de la liste, exécute un peu de code pour mettre à jour les attaches

J'ai aussi mis des commentaires à chaque ligne de code.

Pour ton cas, il faudra rajouter dans ta base un formulaire modal qui s'ouvre en premier, dans lequel se fera le choix.

Je poste ici :

http://www.divshare.com/download/15983026-499

le fichier .mdb (sans les .mdb liés, qui n'ont eux, pas changés)
Bonsoir Blux,

Un grand merci pour tes éclaircissements. Je commence à comprendre les instructions VBA utilisées dans la macro.

J'ouvre ma base d'exploitation sur ton formulaire de choix, ensuite j'ai arrangé à ma façon des instructions VBA (procédure évènementielle) afin de fermer le formulaire de choix et d'ouvrir mon formulaire d'exploitation.

Cela à l'air de tenir la route. Reste à l'utiliser en conditions réelles. Les tests ayant l'air concluant, je pense que l'exploitation devrait bien ce passer.

Je te remercie pour le temps que tu as bien voulu consacrer à ce vieux dossier. Peut être à bientôt sur ce forum ou un autre.

Salutations.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Content que ton problème soit en cours de résolution.

Je commence à comprendre les instructions VBA utilisées dans la macro.
On n'est plus dans le cadre d'une macro, mais on est bien en train de faire du code VBA pur...
Bonjour Blux,

Je reviens vers toi pour un petit problème de chemin d'accès. Si mes tables à lier sont dans le même répertoire que ma base de choix aucun problème, sinon j'obtiens un message d'erreur me signalant que le chemin n'est pas valide.
Il y a t' il une syntaxe particulière pour indiquer le chemin d'accès aux tables à lier.
D'avance merci pour la réponse.
PS tout le reste fonctionne parfaitement.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Comme je l'avais dit en son temps :

Les noms des trois bases sont dans la table, et je prends le chemin courant où est stockée la base choix.mdb pour considérer que les fichiers de données y sont aussi, mais on peut faire comme on veut.

Donc, il faut que tu me dises ce que tu veux faire...
Bonjour,

Mes bases se trouvent sur le serveur de l'entreprise dans un répertoire par table, style (\\serveur\société\programme\gestion\Tables)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Un répertoire par table ou un répertoire par base ?
un répertoire par base qui contient les tables à lier
\\serveur\société\programme1\gestion\Tables1
\\serveur\société\programme2\gestion\Tables2
\\serveur\société\programme3\gestion\Tables3
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 053
Bon, j'ai un peu remodifié, c'est ici :

http://www.divshare.com/download/16055227-7c8
Bonjour,
Merci, cela fonctionne parfaitement.