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 :

[VBA] accéder aux données d'une table


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut [VBA] accéder aux données d'une table
    Bonjours.
    Après avoir lu les règles d'utilisation du forum, c'est avec circonspection que je pose cette question. J'ai beau avoir regardé le faq et les messages de ce forum, j'ai rien trouvé me permettant de résoudre ce problème (sûrement trop simple pour être posé, mais là, je galère)

    Donc en fait ce que je cherche, c'est en cliquant sur le bouton command1 du formulaire, accéder dans VBA à la case 1,1 de la table1 (ou une autre case, je suis pas contrariant...)
    Et ce qu'il me manque, c'est la syntaxe renvoyant le contenu de la case de la table sous VBA (et peut être aussi celle concernant le bouton, car lors de mes essais, il me renvoie une erreur avec mon "Private Sub Commande2_Click()" lorsque j'exécute le tout).

    Désolé de vous faire perdre votre temps pour ça, mais vraiment, je suis en panne. J'ai feuilleté pas mal de bouquins, et sites internet, et je n'ai pas encore vu un sujet parlant de ça.

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour et bienvenue,
    Citation Envoyé par Schniko Voir le message
    Donc en fait ce que je cherche, c'est en cliquant sur le bouton command1 du formulaire, accéder dans VBA à la case 1,1 de la table1 (ou une autre case, je suis pas contrariant...)
    Et ce qu'il me manque, c'est la syntaxe renvoyant le contenu de la case de la table sous VBA (et peut être aussi celle concernant le bouton, car lors de mes essais, il me renvoie une erreur avec mon "Private Sub Commande2_Click()" lorsque j'exécute le tout).
    Peux-tu préciser ta demande ?

    Voilà ce que j'ai compris... Peux-tu confirmer que c'est correct ?

    (1) Un formulaire est ouvert, dans lequel tu as créé un contrôle bouton nommé Command1.

    (2) La table nommée Table1 est ouverte dans sa propre fenêtre (c'est une feuille de données).

    (3) Quand l'utilisateur clique sur le bouton Command1, le focus est placé sur la feuille de données qui affiche Table1, et plus précisément dans la 1ère cellule de la 1ère ligne.

    C'est bien ça ???
    _

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Merci d'avoir répondu si vite et pardon pour les imprécisions.

    Donc oui, mon problème est parfaitement celui que tu décris
    (même si je ne comprends pas tout à fait ce que tu appelles focus : je souhaites accéder à la une des case de la table afin
    -ou bien de l'affecter à une variable pour la traiter au cœur d'une autre fonction du programme vba
    -ou bien pour modifier son contenu)

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Citation Envoyé par Schniko Voir le message
    Donc oui, mon problème est parfaitement celui que tu décris
    (même si je ne comprends pas tout à fait ce que tu appelles focus :
    Donner le focus à une fenêtre signifie "rendre active cette fenêtre".

    Citation Envoyé par Schniko Voir le message
    je souhaites accéder à la une des case de la table afin
    -ou bien de l'affecter à une variable pour la traiter au cœur d'une autre fonction du programme vba
    -ou bien pour modifier son contenu)
    Cette démarche est plutôt originale.

    Habituellement avec Access, un concepteur crée un formulaire qui est directement lié à une source de données (par exemple une table) et les contrôles de ce formulaire donnent directement accès aux données.

    Aussi, je te demande si c'est vraiment ton but d'accéder aux données d'une table ouverte dans sa propre fenêtre.

    Si c'est bien ton but, je peux t'aider.
    Pour m'aider à être plus efficace dans mon appui, pourrais-tu nous donner ton code (même une ébauche, on n'est pas là pour critiquer ) ?

    Merci par avance.

    P.S. Au fait, es-tu débutant, initié, voire confirmé dans l'utilisation/programmation d'Access ?
    _

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    En gros, ce que je cherche à faire, c'est d'utiliser le formulaire comme interface afin de stocker des données dans une table. Ces données vont ensuite servir de base pour un traitement statistique (effectué sous vba) et les stats obtenues vont permettre la création d'un graph renvoyé dans le formulaire.

    Pour l'instant, je m'intéresse à la partie qui fait le lien entre access et vba, soit la récupération et la réinjectation des données.

    Donc, euh dans la mesure ou je comprends le problème et access ainsi que ce que tu me dis (et je t'assures que même la somme des trois, c'est pas brillant ) oui,
    c'est vraiment mon but d'accéder aux données d'une table ouverte dans sa propre fenêtre.
    Quand à mon code, mais là, j'ai vraiment honte, car déjà je sais que la formulation que j'utilise n'existe pas (tout d'abord elle est trop évidente pour faire partie du langage informatique, et ensuite parcequ'elle ne marche pas). Mais bon, là voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Commande1_Click()
        Dim var1 As Variant
        var1 = Table1.Cells(1,1)
    End Sub
    Voilà, comme je l'avais dit, c'est pas très glorieux (pour l'instant) Mais si cette étape (celle de récupérer les données) est passée, je pourrais alors m'attaquer au coeur de ce projet : leurs manipulations.

    Merci pour ton aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    a et pardon : je suis débutant dans l'utilisation d'access (pour l'instant, j'ai encore le bouquin access pour les nuls ouvert sur mes genoux...)

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Mais bon, je ne vais pas te faire languir plus longtemps avec mes remarques (bien que ce soit des mises en garde par rapport à de possibles mauvaix choix de conception)...

    Imaginons que tu veuilles travailler avec une table qui n'est pas encore ouverte.
    Il faut donc l'ouvrir.

    Ensuite, tu peux désigner une ligne qui deviendra l'enregistrement courant (par exemple la 3ème ligne)

    Pour ce qui est de lire ou modifier les données d'une "cellule" , il n'est hélas pas possible d'y faire référence sans que la feuille de données ne soit activée (elle doit avoir le focus). Cette limitation est due au fait que tu travailles directement dans la feuille de données d'une table.

    Donc il faut lui donner le focus.

    A partir de là, tu peux accéder à une cellule de cet enregistrement de 2 manières:
    (cas a) en utilisant le nom du champ (de la table) qui est affiché dans cette cellule,
    (cas b) en utilisant le numéro de colonne de la cellule (la première colonne=0).

    Dans tous les cas, le mieux est de donc de passer par l'objet Screen.ActiveDataSheet et sa collection Controls() qui donne accès aux cellules de la feuille de données (ici les cellules sont vues comme des contrôles).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ' Ouvrir la table
    DoCmd.OpenTable "Table1", acViewNormal, acEdit
     
    ' La ligne n°3 devient l'enregistrement courant
     docmd.GoToRecord acDataTable,"Table1", acGoTo, 3
     
    ' Donner le focus à la table
    DoCmd.SelectObject acTable, "Table1", False
     
    ' Cas a - Lire le contenu de la cellule en première colonne
    var = Screen.ActiveDatasheet.Controls(0)
     
    ' Cas b - Lire le contenu de la cellule correspondant au champ nommé "Champ1"
    var = Screen.ActiveDatasheet.Controls("Champ1")
    Bien sûr, toute cette présentation perd de son intérêt si tu utilises une bibliothèque d'accès aux données (DAO par exemple)
    _

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

Discussions similaires

  1. Accéder aux données d'une DLL
    Par MoscoBlade dans le forum MFC
    Réponses: 4
    Dernier message: 15/11/2006, 12h14
  2. [C#][AJAX] Accéder aux DropDownlist d'une table HTML
    Par actarus108 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/10/2006, 11h38
  3. Accéder aux Select d'une table HTML
    Par actarus108 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/10/2006, 16h11
  4. [C#] Comment accéder aux données d'une Form ?
    Par cjacquel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/07/2006, 11h55
  5. accéder aux colonnes d'une table différemment
    Par fab_hendrix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/08/2005, 19h20

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