Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2011, 15h21   #1
Membre du Club
 
Homme Gérard Durand
Retraité
Inscription : juillet 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Gérard Durand
Âge : 71
Localisation : France

Informations professionnelles :
Activité : Retraité
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 79
Points : 58
Points : 58
Envoyer un message via MSN à gerarddurand
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
gerarddurand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 17h16   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Voici comment tu peux procéder.

Code :
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 :
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 :
1
2
3
 
'Exemple d'utilisation
dim TauxReduit as double:TauxReduit=LireTauxTVA("REDUIT")
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/12/2011, 17h47   #3
Membre du Club
 
Homme Gérard Durand
Retraité
Inscription : juillet 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Gérard Durand
Âge : 71
Localisation : France

Informations professionnelles :
Activité : Retraité
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 79
Points : 58
Points : 58
Envoyer un message via MSN à gerarddurand
grand merci R.MAROT.

Je ne comprend pas tout mais je vais me debrouiller
a+
gerarddurand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 18h34   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Que ne comprends-tu pas ?

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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 16h24   #5
Membre du Club
 
Homme Gérard Durand
Retraité
Inscription : juillet 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Gérard Durand
Âge : 71
Localisation : France

Informations professionnelles :
Activité : Retraité
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 79
Points : 58
Points : 58
Envoyer un message via MSN à gerarddurand
bonjour,
en fait voilà ce que je voulais faire
Code :
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+
gerarddurand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 19h00   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
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+
__________________
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h10   #7
Membre du Club
 
Homme Gérard Durand
Retraité
Inscription : juillet 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Gérard Durand
Âge : 71
Localisation : France

Informations professionnelles :
Activité : Retraité
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 79
Points : 58
Points : 58
Envoyer un message via MSN à gerarddurand
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
gerarddurand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 18h59   #8
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Ok alors voilà un petit ajout à tes compétences de programmation dont tu me remerciera un jour :-) : les tableaux !!!

Code :
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 :
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 :
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+
__________________
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h51.


 
 
 
 
Partenaires

Hébergement Web