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 :

récupération des données d'une table [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Avatar de gerarddurand
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 118
    Points : 127
    Points
    127
    Billets dans le blog
    1
    Par défaut récupération des données d'une table
    Bien le bonjour,

    J'ai une table avec des taux de TVA.

    au démarrage de la base j'aimerais extraire les données de la table TVA et les charger dans des variables.

    Pouvez vous me donner un exemple.

    merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Voici comment tu peux procéder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    'charge les taux de TVA dans un tableau en mémoire
    dim tTVA as double()
     
    dim db as dao.database:set db=currentdb
    dim r as dao.recordset:set r=db.openrecordset("NomTaTableTVA")
    r.movelast:r.moveFirst 'Force le comptage des enregistrement
     
    redim tTVA(r.recordcount)
     
    dim i as long
     
    do while not r.eof()
       tTVA(i)=r![TauxTVA]
       i=i+1
       r.movenext
    loop
     
    r.close:set r=nothing
    set db=nothing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    'Solution alternative pour lire un taux en particulier
    public function LireTauxTVA(prmClefTaux as string) as double
      dim tonTaux as double
      dim tonTauxLu as variant:tonTauxLu=DFirst("TauxTVA","NomTableTVA","[ClefTva]=""" & prmClefTaux & """")
     
      'Ne pas utiliser NZ() avec des nombres décimaux, cela coupe parfois les décimales.
      if not insull(tonTauxLu) then
          tonTaux=tonTauxLu
        else
          tonTaux=0
      end if
     
      LireTauxTVA=tonTaux
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'Exemple d'utilisation
    dim TauxReduit as double:TauxReduit=LireTauxTVA("REDUIT")
    A+

  3. #3
    Membre habitué
    Avatar de gerarddurand
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 118
    Points : 127
    Points
    127
    Billets dans le blog
    1
    Par défaut
    grand merci R.MAROT.

    Je ne comprend pas tout mais je vais me debrouiller
    a+

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Que ne comprends-tu pas ?

    A+

  5. #5
    Membre habitué
    Avatar de gerarddurand
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 118
    Points : 127
    Points
    127
    Billets dans le blog
    1
    Par défaut
    bonjour,
    en fait voilà ce que je voulais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
     
    Set db = Application.CurrentDb
    Set rst = db.OpenRecordset("tblTvaPourInfoFacture")
     
    While rst.EOF = False
     RepTVA = rst!Taux
     RepTVA1 = rst!Taux1
     RepTVA2 = rst!Taux2
     RepTVA3 = rst!Taux3
     RepTVA4 = rst!Taux4
     RepTVA5 = rst!Taux5
     
    rst.MoveNext
     
    Wend
     
    rst.Close
    Set rst = Nothing
    Set db = Nothing
    J'avais oublié que j'avais un livre de Microsoft office ACCESS 2003. En fouillant j'ai trouvé.

    En tout cas grand merci de ton aide MAROT
    a+

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Pour info et une meilleur maintenance il vaudrai mieux utiliser un tableau de valeur (dim tva(nombreValeur)) plustôt que 5 variables et de même dans ta table il faudrait avoir une table des taux de TVA associée à ta facture.

    Une solution serait problement d'associer un code TVA à chacune de tes lignes facturation puis d'utiliser un requête qui les inventorier.

    Là si tu a ajoutes ou enlève un taux tu va devoir modifier ton code ... c'est toujours un peu plus complexe que de traiter des enregsitrements en boucle.

    A+

  7. #7
    Membre habitué
    Avatar de gerarddurand
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 118
    Points : 127
    Points
    127
    Billets dans le blog
    1
    Par défaut
    bonsoir,

    Tu as certainement raison rené mais je ne suis pas assez compétant pour comprendre ce que tu proposes.(je suis autodidacte et je programme par passion )
    J'ai intégré les variables dans mon état. Si il y a une modif de taux je suis redirigé vers le formulaire de départ pour recharger mes nouveaux taux.
    En tout cas je te remercie pour ton aide. C'est vraiment sympa

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Ok alors voilà un petit ajout à tes compétences de programmation dont tu me remerciera un jour :-) : les tableaux !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim  RepTVA(5) as double 'Attention le (5) indique l'indice maximum et les indices commences à 0 donc en réalité c'est un tableau de 6 éléments.
     
    dim i as long:for i=lbound(RepTVA) to ubound(RepTVA) 'de l'indice minimum à l'indice maximum
       'Affiche le contenu de chacune des cases du tableau
       debug.print REPTVA(i) 
    next i
    L'intéret du tableau c'est de pouvoir faire des boucles qui permettent de traiter 1 ou 200000 d'info de la même façon et en quelques lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim sommeTaux as double
    dim i as long:for i=lbound(RepTVA) to ubound(RepTVA)
       'Fait la somme de toutes les cases du tableau
       sommeTaux=sommeTaux + REPTVA(i) 
    next i
    debug.print sommeTaux
    tu peux aussi avoir des tableaux à plus de 1 dimension (par exemple 3 pour représenter des points dans un l'espace).

    Ici un exemple avec 2 dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    dim  RepTVA(5,2) '6 lignes x 3 colonnes
     
    dim sommeTaux as double
    dim i as long
    dim j as long
     
    for i=lbound(RepTVA(0)) to ubound(RepTVA(0))
       for j=lbound(RepTVA(1)) to ubound(RepTVA(1))
          'Fait la somme de toutes les cases du tableau ligne par ligne et colonne par colonne.
          sommeTaux=sommeTaux + REPTVA(i, j) 
       next j
    next i
     
    debug.print sommeTaux
    Note que dans Access on peut généralement remplacer un tableau à une ou deux dimension par une table ou une requête.

    A+

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2014, 12h19
  2. Récupération des données d'une table
    Par honey0 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 12/07/2011, 14h19
  3. [MySQL] Récupération des données d'une table
    Par Alixe80 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 30/03/2009, 15h12
  4. récupération des données d'une table dans une page jsp
    Par sihamsisim dans le forum Struts 1
    Réponses: 28
    Dernier message: 22/05/2008, 19h01
  5. [MySQL] Récupération des données dans une table
    Par doudom dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/07/2007, 19h59

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