Importation de matrice sous Access

Résolu
gnogno35 Messages postés 4 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 17 novembre 2008 - 13 nov. 2008 à 11:12
gnogno35 Messages postés 4 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 17 novembre 2008 - 17 nov. 2008 à 09:54
Bonjour,

Habitué au développement d'applications (C++ essentiellement), je suis sur un projet de base de données Access à remplir à partir de classeur Excel. L'option prise est d'avoir une seule table Access dans laquelle on retrouve toutes les colonnes d'Excel sous la forme d'un champ de table sous Access.

Le problème métaphysique est que le classeur Excel possède N+1 onglets (feuilles) :
- une feuille de généralités (date, heure, etc...) pour laquelle on effectue le transfert conformément à ce que j'ai expliqué plus haut (1 colonne => 1 champ de table). Cette feuille contient N lignes représentant un essai. Chaque ligne correspond donc à un enregistrement sous Access
- N feuilles "essai" regroupant 10000 (dix mille) mesures de plusieurs paramètres physiques (peu importe le domaine) donc autant de fois 10000 valeurs et chaque feuille est associée à une ligne de la feuille de généralités.

Ce fichier Excel représente donc LA base de donnée à convertir en base de données Access. Le but est d'avoir un programme à lancer permettant de choisir un fichier Excel et contruisant la base de données Access.

Ca commence à faire beaucoup de données, je ne sais pas par quel bout prendre le problème et le conseil qui m'a été donné est de stocker les matrices de mesures sous la forme d'objet OLE (késako ?) pour accélérer le stockage. Etant totalement novice sous Access (et Visual Basic), tous vos conseils et idées sont les bienvenus.

Meci d'avance.

5 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
13 nov. 2008 à 20:45
Bonjour gnogno35

Merci, ta présentation est claire. Il faut commencer à entrer dans les détails.

As-tu déjà créé la table ? Peux-tu préciser sa structure ? C'est là que je suis un peu dans le flou.

Profites-en pour préciser la relation entre une ligne de généralités et une feuille essai, ainsi que la façon dont sont réparties les mesures dans une feuille essai.

As-tu un jeu d'essai (*.mdb et *.xls) ?

Cordialement
3
gnogno35 Messages postés 4 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 17 novembre 2008
14 nov. 2008 à 10:35
Bonjour,

et merci de t'intéresser à mon cas.
J'ai un jeu d'essai mais comment le transmettre ?

La relation entre une ligne de généralités et une feuille de mesures (plutôt que essai) se fait par le nom de la feuille du classeur Excel :

onglet "generalités":

<col /><col /><col /><col />----
système, essai, nom, date, ----
sys1, 1, démarrage, 05/10/2008, ----
sys1, 2, arrêt, 15/10/2008, ----
sys2, 1, démarrage, 05/11/2008

le classeur contient 3 onglet de mesures nommés sys1__01, sys2__02 et sys2__01

chaque onglet sysX__YY contient les mesures sous la forme :

<col /><col />----
temps, param1, param2, param3, ----
0, 0, 1, 2, ----
0,001, 1, 2, 3, ----
1,001, 2, 3, 4, ----
2,001, 3, 4, 5, ----
3,001, 4, 5, 6

C'est ce tableau qu'il m'a été conseillé de mettre sous forme d'objet OLE : la table Access contient donc trois colonnes "param1", "param2" et "param3" déclarées de type "objet OLE".

Je me dis que créer une autre table "mesures" ferait fonctionnellement l'affaire (chaque tableau fait 10000 lignes) s'il n'y avait pas l'inconnue "performance".

Pour l'instant, j'ai aussi fait un formulaire de visualisation/saisie. Il faudra que j'ajoute un bouton "Charger base" qui lira le fichier Excel et ventilera toutes les données dans la base Access. Restera le formulaire de requêtage encore plus obscur : il faut permettre à l'utilisateur de saisir des plages de valeurs et faire des combinaisons "ET", "OU". Pas de problème pour faire ça en requête SQL mais je suis aujourd'hui incapable de pondre une IHM utilisable pour ce faire (je fouille le net et me paluche les tuto qui me semblent utiles).

Merci d'avance.
0
gnogno35 Messages postés 4 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 17 novembre 2008
14 nov. 2008 à 11:46
La table Access a cette tête :

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /><title></title><caption></caption>----
clé essai |système |essai |nom |date |testeur |remarques |durée |param1 |param2 |param3 |----
sys1__01, sys1, 1, démarrage, 05/10/2008, machin, v1, 10,
,
,
, ----
sys1__02, sys1, 2, arrêt, 15/10/2008, bidule, v1, 11,
,
,
, ----
sys2__01, sys2, 1, démarrage, 05/11/2008, chouette, v2, 20,
,
,
, <tfoot></tfoot>

Les champs testeur, remarques et durée viennent d'un autre onglet, mais ce n'est pas important.
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
14 nov. 2008 à 18:36
Bonjour gnogno35

Pour le jeu d'essai, je pourrai te donner mon adresse si besoin est.


A vrai dire je ne comprends pas le rôle que joue Access dans ce projet. En effet, si j'ai bien compris, seules les informations issues de la feuille Généralités seront stockées dans la table. Les mesures resteront dans le classeur Excel et seront lues et écrites par l'intermédiaire des objets OLE. Excel servira donc de base de données pour Access ?

Il serait infiniment plus simple de charger les mesures dans une table, tu ne crois pas ? Je ne pense pas qu'il y aura de problème de performance. Cette question se pose au contraire, si tu demandes à Access de travailler sur une base de données Excel.

Je crois également que tu trouveras plus facilement l'aide dont tu as besoin si ton projet est conventionnel.

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gnogno35 Messages postés 4 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 17 novembre 2008
17 nov. 2008 à 09:54
Bonjour,

Je suis tout à fait d'accord avec ton point de vue ... une table de mesures devrait être bien plus pratique.

L'objet OLE m'a été conseillé dans un but de performance mais si tu sous-entends qu'utiliser un objet OLE entraîne le maintien des données hors de la base et qu'en plus les performances sont pas terribles ... l'affaire est entendue.

Il me reste à trouver un moyen de faire une IHM de requêtage très ergonomique (donc pas un formulaire statique) permettant de combiner des critères avec des AND, OR, NOT, etc...

En tout cas, merci de ton aide.
0
Rejoignez-nous