[VBA]

Fermé
Utilisateur anonyme - 24 mai 2005 à 14:04
 Utilisateur anonyme - 26 mai 2005 à 10:24
Salut tout le monde,

J'ai créé sous Access un formulaire en mode Création dont les champs n'appartiennent à aucune table.
Lorsque quelqu'un active une case à cocher, une zone texte apparaît et il peut remplir la zone.
Ce que je voudrais faire, c'est récupérer ces valeurs dans une table qui existe déjà.
Cette table comprend 3 colonnes (Nom, Type et Valeur). Et bien entendu, je souhaite remplir la table dans la zone valeur.

Si quelqu'un a un truc à proposer....
Merci

2 réponses

TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 25
24 mai 2005 à 14:32
Salut,
moi aussi je bosse sur du VBA en ce moment, et j'ai une solution à te proposer ;
Tu peux utiliser un recordSet, c'est un outil qui te permet de manipuler des données dans les tables exisantes.

Ex :

Dim bds As Database, rst As Recordset

' Retourne une référence à la base de données en cours.
Set bds = CurrentDb
Set rst = bds.OpenRecordset("nom_de_ma_table")

' Remplit l'objet Recordset.
rst.MoveLast
' Revient au premier enregistrement.
rst.MoveFirst

'permet de modifier le record set
rst.Edit

'Affectation de la nouvelle valeur
rst!<nomDeMonChamp> = <valeur>

'Confirmation du changement
rst.Update

'FINI
rst.Close

En espérant que ça puisse t'aider ...

et si tu a d'autres soucis en VBA, n'hesite pas, je commence a toucher ma bille a force d'y passer mes journées ( ^_^')
0
Utilisateur anonyme
24 mai 2005 à 15:51
Merci pour les tuyaux TuXor, mais le compilateur m'affiche le message : "Type défini par l'utilisateur non défini".
Tu comprends ce que ça veut dire?
Merci
0
TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 25 > Utilisateur anonyme
24 mai 2005 à 16:05
De rien je galère aussi sur d'autres pbs en VBA, dc si je peux aider...

sinon, est-ce que tu as un numéro d'erreur ?
et sur quelle istruction le compilo bloque ?
et si tu as d'autres détail n'hésite pas a les donner aussi.
0
Utilisateur anonyme > TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006
24 mai 2005 à 16:27
En fait je viens de tout changer.
Je t'explique:
J'ai créé un formulaire en mode création dont les zones textes ne sont liées à aucune table.
Ce que je voudrais, c'est recopier les valeurs contenues dans ces zones texte dans une table. en je n'arrive pas à faire la liaison entre le formulaire et la table.
Voilà mon problème
0
TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 25
24 mai 2005 à 18:40
Ok bien reçu,
en fait je travaille sur un programme qui fait ce genre de choses, simplement je ne fait pas directement le lien entre mon formilaire et ma table.

Mais il n'ya pas de raison pour que ça na marche pas.

Assez de bavardage;

avec la ligne qui suit, tu récupère les contenu de ton champ dans une variable de type string :

MaVariableString = Form_Mon_formulaire.Mon_champ


Pour le reste, c'est à dire de remplir la base avec la valeur que l'on vient de récupérer ; la réponse est déja présente dans la discussion un peu plus haut.

Autre possibilité, tu peux inserer des valeurs dans des tables (existantes ou à créer) avec une requête SQL.
je te conseille d'utiliser la fonction :

DoCmd.RunSql " ma requete ; "


voila voila.
si tu a toujours des soucis, ask me...
0
Utilisateur anonyme
25 mai 2005 à 11:04
Bien reçu
Merci pour tes conseils avisés
J'essaie de suite
Surement à bientôt....
0
Utilisateur anonyme
25 mai 2005 à 11:19
En fait, je ne comprends pas comment marche le RecordSet.
Où est ce que je dois entrer les lignes de code que tu as données au-dessus?

Désolé pour toutes ces questions!
0
TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 25
25 mai 2005 à 11:38
No souci pour les questions, c'est qu'il y'a besoin de précisions.

C'est vrai que je n'ai pas parlé de l'endroit ou l'on insert ce code, alors voila ; je met la ligne pour récupérer les données dans une fonction evénementielle qui se lance en cliquent sur un bouton du type Valider, tu fais un petit IF pour vérifier que le champ est bien rempli etc... enfin ça c'est des détail.

Pour ce qui est des lignes qui servent à inserer les infos dans la base, tu peux les coller juste à la suite dans la fonction événementielle, ou bien dans une fonction spécifique que tu crée à coté.

Un petit topo sur : Commentçamarcheunrecordset
(même si je ne suis pas un spésialiste )

D'aprés ce que j'ai pu comprendre, le record set est un genre de super enregistrement, qui lorsqu'il va étre appelé (code déja donné) va contenir toutes les données d'une table, celle dont le nom aura été utilisé pour ouvrir le record set.

On peut par la suite récupérer ces données dans des variable, mais également (et c'est la que ça devient ineressant(quoi ce n'était pas déja passionnant )) modifier les information contenus dans la table
tout cela avec :

'Pour dire que l'on veut modifier le recordset
rst.Edit
'pour modifier
rst!ID = IDREG <--(variable du programme)
     ^
     ||
(nom de mon champ dans la base)

'ne pas oublier de validerles changement et de fermer le record set 
rst.Update
rst.Close

Voila. j'epére que cela t'éclaire un peu.
Pour plus d'infos, je suis toujours en ligne, mais tu peux aussi consulter l'aide d'Access même si c'est pas trés bien fichu..
0
Utilisateur anonyme > TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006
26 mai 2005 à 10:24
Salut TuXor,
Je suis désolé de t'embêter encore ce matin, mais j'ai toujours une erreur avec l'utilisation de RecordSet.
L'erreur "Type défini non défini par l'utilisateur" se situe à la ligne :
Dim bds As Database, rst As Recordset.
Access ne connait pas le terme Database.
Qu'est ce qu'il faut que je fasse alors?
Merci
0