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 29/11/2010, 18h24   #1
Membre éclairé
 
Avatar de Nako_lito
 
Développeur .NET
Inscription : mai 2008
Messages : 561
Détails du profil
Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : mai 2008
Messages : 561
Points : 390
Points : 390
Par défaut Récuperer info depuis une table

Bonjour,
mon problème est je pense tres basique, mais je n'arrive pas a le résoudre pour autant.
Je n'arrive pas a récuperer une valeur présente dans une table en ligne de code.

J'ai une table avec 4 colonnes, 3 lignes.
Je souhaite parcourrir toute les ligne sur la 3eme colonnes et faire une action en fonction du résultat.

Comment puis-je procéder ?

Par avance merci.
__________________
- La dernière fois que j'ai testé ca fonctionnait !
- Vous n'avez rien modifié ?
- Non ! Je suis pas idiot non plus.
- ....
- Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.
Nako_lito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h34   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 079
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 079
Points : 11 615
Points : 11 615
Bonjour,

Un peu vague tout ça.

Avec une boucle sur un recordset.
Code :
1
2
3
4
5
6
7
8
9
10
dim rst as recordset
set rst = currentdb.openrecordset("select .... from table where ....",dbopendynaset)
while not rst.eof
    if rst.fields(2) = valeur then
       action....
    endif
    rst.movenext
wend
rst.close
set rst = nothing
ou par une requete update s'il sagit d'une action sur l'enregistrement de cette même table.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/12/2010, 15h34   #3
Membre éclairé
 
Avatar de Nako_lito
 
Développeur .NET
Inscription : mai 2008
Messages : 561
Détails du profil
Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : mai 2008
Messages : 561
Points : 390
Points : 390
C'est bien un recordset qu'il me faut, merci.

Mais je reste tjrs bloqué sur mon problème. Je vais essayer de l'expliquer le plus clairement possible.

je possède 3 table de données:
nom de la table (champs)
GestNumDispo (Libelle société, PAC, Code société AXA, Code société, Numero dispositif)
GestNumFond842 (Libellé, Rubrique PAC 842, Numer fond)
GestNumFond165 (Libellé, Rubrique PAC 165, Numer fond)

J'ai ensuite une requête "générique" que je veux faire tourner X fois.
Je souhaite lui affecter des parametre différent a chaque fois (libellé champs Numéro dispositif, libellé champs du Numero de fond, critère sur la période, critère sur le PAC et critère sur la rubrique).

Donc a chaque fois que je parcours une ligne de GestNumDispo, il faut que je parcours la table GestNumFond qui correspond (la selection de la table GestNumFond se fait par rapport au PAC indiqué dans GestNumDispo).

J'ai ecrit l'algorithme simplifié:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public sub general()
  pour chaque ligne de la table GestNumDispo
    switch case: code societe
       case : 019
         extraireFichierAXA (numero PAC correspondant dans la table), (numero dispositif correspondant dans la table)
       case : 050
         extraireFichierAXA (numero PAC correspondant dans la table), (numero dispositif correspondant dans la table)
       case : 037
         extraireFichierAXA (numero PAC correspondant dans la table), (numero dispositif correspondant dans la table)
     end switch
  fin pour
end sub
 
public sub extraireFichierAXA (lePAC as string, leNumeroDispo as string)
  Pour chaque ligne dans la table NumGest du PAC correspondant faire
    libellé champs numero dispo = leNumeroDispo
    libelle champs numero fond = numero fond correspondant a la rubrique en train d'etre parcourue
    critère sur la période = periode (YYYYMM)
    critère sur le PAC = lePAC
    critère sur la rubrique = la rubrique qui est en cours
 
    Enregistrer le resultat de la requete dans une table tempo
  fin pour
  extraire la table tempo vers Excel
  effacer la table tempo
fin sub
J'espere que l'ennoncé est clair :p

là ou je bloque c'est : comment parcourrir les rubriques, et comment enregistrer dans la table tempo et comment récupérer des valeurs dans une table (par exemple dans les parametre, quand je souhaite récuperer le PAC ou le numéro dispositif).

Merci pour vos réponse et votre temps par avance.
__________________
- La dernière fois que j'ai testé ca fonctionnait !
- Vous n'avez rien modifié ?
- Non ! Je suis pas idiot non plus.
- ....
- Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.
Nako_lito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h02   #4
Nouveau Membre du Club
 
Homme
Apprenti en dévelloppement
Inscription : août 2010
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Apprenti en dévelloppement

Informations forums :
Inscription : août 2010
Messages : 81
Points : 30
Points : 30
Par défaut rep

*Bonjour*

Code :
1
2
3
4
5
6
Dim db As DAO.Database
Dim rst As DAO.Recordset
 
'ouverture de la base de donnée : recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("tatable", dbOpenSnapshot)

puis tu cherche tes valeurs avec :

Code :
rst.("nom de ton champ")
ect..
luchoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h04   #5
Nouveau Membre du Club
 
Homme
Apprenti en dévelloppement
Inscription : août 2010
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Apprenti en dévelloppement

Informations forums :
Inscription : août 2010
Messages : 81
Points : 30
Points : 30
et si tu veu avancé dans tes enregistrement et les afficher rajoute

luchoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h06   #6
Nouveau Membre du Club
 
Homme
Apprenti en dévelloppement
Inscription : août 2010
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Apprenti en dévelloppement

Informations forums :
Inscription : août 2010
Messages : 81
Points : 30
Points : 30
pour rajouter des enregistrements essaie

Code :
1
2
3
4
5
6
7
rst.MoveNext 
 
et si tu veu tous les afficher utilise :
do while.eof
rst.("tavaleur")
rst.movenext
loop
luchoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h18   #7
Membre éclairé
 
Avatar de Nako_lito
 
Développeur .NET
Inscription : mai 2008
Messages : 561
Détails du profil
Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : mai 2008
Messages : 561
Points : 390
Points : 390
Merci bcp, je teste ca dans la journée !
Merci encore.
__________________
- La dernière fois que j'ai testé ca fonctionnait !
- Vous n'avez rien modifié ?
- Non ! Je suis pas idiot non plus.
- ....
- Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.
Nako_lito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h32   #8
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour à tous

Heu luchoo, je suis vraiment très étonné de ce que vous écrivez :

Citation:
pour rajouter des enregistrements essaie

rst.MoveNext
Un recordset, ce n'est pas comme un formulaire, où lorsque l'on demande suivant à partir du dernier enregistrement, il en crée un vide.

La syntaxe est plutôt la suivante :

Code :
1
2
3
rst.edit
rst.field("le_champ_de_la_table_a_modifier")= la_valeur
rst.update
En tous cas, un petit passage par les tutoriels n'est jamais une perte de temps, et en l'occurrence, il y en a un super de Christophe Warin Définition et manipulation de données avec DAO.

A consommer sans modération!!!

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/12/2010, 17h42   #9
Membre éclairé
 
Avatar de Nako_lito
 
Développeur .NET
Inscription : mai 2008
Messages : 561
Détails du profil
Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : mai 2008
Messages : 561
Points : 390
Points : 390
Merci bcp pour le tuto, c'est ce que je cherchais.

Je vais me debrouiller ac ca.

Parfait !
__________________
- La dernière fois que j'ai testé ca fonctionnait !
- Vous n'avez rien modifié ?
- Non ! Je suis pas idiot non plus.
- ....
- Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.
Nako_lito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 16h15   #10
Nouveau Membre du Club
 
Homme
Apprenti en dévelloppement
Inscription : août 2010
Messages : 81
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Apprenti en dévelloppement

Informations forums :
Inscription : août 2010
Messages : 81
Points : 30
Points : 30
Oups pour répondre à pierreantoine, je me suis tromper, ce n'est pas pour rajouter un enregistrement mais pour parcourir les enregistrements..
luchoo 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 01h21.


 
 
 
 
Partenaires

Hébergement Web