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 :

Variable tableau avec Access [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 24
    Points
    24
    Par défaut Variable tableau avec Access
    Bonjour,

    Je connais un tout petit peu le VBA avec Excel et je voulais faire une petite base de données mais cette fois-ci avec Access.

    Je voulais savoir s''il est possible de "coller" d'un seul coup les données obtenues dans une variable tableau à partir du dernier enregistrement d'une table Access, un peu comme ça peut être fait sur excel.
    Ou bien est ce qu'il faut passer par une boucle et ainsi copier chaque ligne de la variable tableau dans la table Access.

    Merci.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si par "variable tableau" tu entends une feuille EXcel, oui c'est possible avec l'importation : DoCmd.ImportSpreadsheet().

    Si tu entends quelque chose comme dim t(100) as string, soit un tableau de 101 éléments en mémoire, alors non. Il faut écrire chcun des éléments 1 à 1 dans une table.

    Ceci dit généralement en Access on essaiera d'utiliser directement une table plutôt qu'un tableau en mémoire. C'est plus "naturel" car il y a tout un tas d'outils pour les utiliser alors que les tableaux ne sont accessible qu'au VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 24
    Points
    24
    Par défaut
    C'est le 2e cas auquel je pensais.
    Un tableau à 2 dimensions.

    En fait cette variable tableau est obtenue parce que je liste les fichiers contenus dans des répertoires et sous-répertoires.
    Je mets ces infos de fichiers dans une variable tableau au lieu d'écrire directement dans une table Access, ça va plus vite je pense, et je voulais "coller" ce tableau une fois obtenu dans la table Access. C'est la méthode que je faisais sous Excel.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Oui mais en Access tu ne peux pas donc écrit directement les résultats dans la table.

    En Access une table "n'existe" qu'un enregistrement à la fois.

    Tu peux manipuler plusieurs enregistrements avec des requêtes SQL mais voit-le quand même comme une lecture et modification d'une ligne à la fois, pour chacune des lignes concernées.

    Quand à la vitesse d'exécution, il y a des buffers gérés en interne par Access et des buffers gérés au niveau de Windows et aussi au niveau du(des) processeur(s) donc il n'est pas évident de savoir si "c'est plus rapide" ou pas sans faire de comparaison des différentes méthodes.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 24
    Points
    24
    Par défaut
    Du coup ça veut dire qu'il vaut mieux que je laisse tomber ma variable tableau et que ma boucle sur tous mes fichiers écrivent directement les infos dans la table Access ?
    Ou bien je garde la variable tableau et j'écris les infos de la variable tableau dans la table Access avec une boucle ?

    Il y a 2 choses que je n'ai pas compris dans ton message :

    1/ "En Access une table "n'existe" qu'un enregistrement à la fois" -> ça veut dire quoi une table n'existe qu'un enregistrement à la fois ?

    2/ "Quand à la vitesse d'exécution, il y a des buffers gérés en interne par Access et des buffers gérés au niveau de Windows et aussi au niveau du(des) processeur(s) donc il n'est pas évident de savoir si "c'est plus rapide" ou pas sans faire de comparaison des différentes méthodes" -> c'est quoi des buffers ?


    Merci.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Du coup ça veut dire qu'il vaut mieux que je laisse tomber ma variable tableau et que ma boucle sur tous mes fichiers écrivent directement les infos dans la table Access ?
    Oui passer par une variable tableau ne fait qu'ajouter de la complexité au traitement.

    1/ "En Access une table "n'existe" qu'un enregistrement à la fois" -> ça veut dire quoi une table n'existe qu'un enregistrement à la fois ?
    Dans Excel tu as une notion de "feuille" où toutes les lignes et toutes les colonnes existent "simultanément".
    Access lui ne voit ces données qu'une seule ligne à la fois.
    C'est pour cela que tu ne peux pas copier ta variable tableau directement dans une table.

    C'est un peu simplifiée comme vue mais cela reste un bon modèle mental.

    c'est quoi des buffers ?
    En français on appelle cela "Tampon" ou "Mémoire Tampon". C'est un espace en mémoire vive où l'ordi stocke des informations avant de les "écrire" réellement. Pour les accès aux disques par exemple, Windows va stoker temporairement en mémoire des informations jusqu'à ce qu'il en ai une certaine quantité puis il va réellement les transférer vers le disque. Ça marche pour l'écriture et la lecture, quand tu demandes une info, il récupère un peu plus car il est probable que tu vas en avoir besoin.

    Ces tampons sont présents quasiment à tous les niveaux : processeur, disque, même mémoire vive ce qui fait qu'il est assez difficile d'estimer un temps de traitement sans faire de mesure et même là les résultats pourraient varier d'une machine à l'autre ou même en fonction du moment où tu fais tes tests.

    Avec la puissance des machines actuelles, je dis qu'il faut optimiser le code pour sa compréhension pour l'humain car c'est celui qui prend le plus de temps à faire les choses. Donc si ton code super optimisé est compréhensible en 3h, je préfère un code moins optimum que je comprends en 5 mn.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    Si vraiment tu es à la microseconde prés dans ton traitement il y a d'autres méthodes :

    La collection (avec une classe d'objet) - la classe contient les propriétés de ton objet (chemin, nom du fichier, taille...) et tu stockes ça dans la collection. 1 fichier = 1 instance de classe, un item de la collection = une instance de la classe.

    Le data shaping https://arkham46.developpez.com/arti...s/msdatashape/
    A voir, je n'ai pas pratiqué -ça fait un moment que c'est dans la faq mais je n'ai jamais eu le déclic.

    ou encore le Dictionnary (Ms scripting runtime) qui permet de stocker des données structurées.

    Si tu n'es pas à la microseconde commence par utiliser une table comme le suggère marot.
    Les tables sont à Access ce que les feuilles sont à Excel.

    Totalement d'accord avec la remarque de marot :
    Avec la puissance des machines actuelles, je dis qu'il faut optimiser le code pour sa compréhension pour l'humain car c'est celui qui prend le plus de temps à faire les choses. Donc si ton code super optimisé est compréhensible en 3h, je préfère un code moins optimum que je comprends en 5 mn.
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 24
    Points
    24
    Par défaut
    Bonsoir marot_r et loufab,

    Merci pour vos réponses.
    J'ai abandonné les variables tableaux avec Access, j'ai réussi à faire un bout de code avec donc de l'écriture directement par enregistrement pour le scan de dossiers.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/05/2017, 16h35
  2. Savoir exploiter une variable tableau avec une sous variable tableau
    Par patricktoulon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/02/2016, 22h26
  3. Créer un tableau avec access comme sur les pages web
    Par celiaaa dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/06/2007, 22h53
  4. Réponses: 4
    Dernier message: 09/03/2006, 09h50
  5. [VB6] Déclaration d'un tableau avec variable en paramètre.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/10/2005, 12h21

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