Vba réalisation
RésoluJe souhaiterai réaliser un module access qui m'afficherait les enregistrements (qui correspondes dans deux tables différentes) dans un tableau access.
Quelqu'un aurait il une idée? Tout conseil de votre part étant bien évidemment le bien venu.
Configuration: Windows XP Internet Explorer 6.0
91 réponses
Il s'agit d'afficher dans un formulaire Access les enregistrements issus de deux tables différentes et de les relier pour qu'ils apparaissent côte à côte dans le même tableau. La solution clé est d'utiliser soit une table soit une requête comme source du formulaire, à condition de disposer d'un champ commun permettant de lier les données. Le choix entre tables ou requêtes n'est pas restrictif et dépend du besoin, le code reste essentiellement inchangé lorsque le lien s'opère par un champ commun (numéro d'enregistrement ou autre). En pratique, on peut exploiter une jointure SQL ou une requête regroupant les données des deux sources pour les afficher dans un seul formulaire, ce qui permet d'éviter des duplications et de clarifier les correspondances.
-
éhéh! Euh...ouai, enfin j'y taf quoi,lol
Nan là ils m'ont demandés de faire l'explicatif en priorité (Oo?? ouai moi aussi j'comprend pas mais bon...)
Mais j'vais y arrivé, pour l'explicatif le prob, c'est qu'il commence au tout tout tout début, jusqu'a la création des enregistrement et tout et tout, et là c'est franchement long, mais bon faut que je procède par étape et que je me rappel de tout ce que j'ai fait,... pas simple! -
Contributeurca c'est pour pouvoir refourger le bébé à quelqu'un quand tu partira.. qu il comprenne les méandres tres compliqué de tes manip ;)
un classique :p
Mais bon, comme t'a tout bien suivi et compris (enfin, j espere).. ca devrais pas etre compliqué ;)
Bon, t'as rajouter le code de mon formulaire activate dans le tient?? et ca marche comme tu veux ? -
:D ok, et cerise sur le gateau, my boss m'a demandé de créer un explicatif word sur tout ce que j'ai fait depuis le début! XD Y sont fous ces patrons!
-
ContributeurBen faut lire un peu ;)
2) Le controle des différence se fait dans la propriete activate du formulaire :
Et oui, je sais, je suis tres tres tres patient... comme dirais colombo.. ma femme me (le) dit toujours... ;) :p
Allez, vas y rambo.. c'est presque fini :p -
Encore merci! j'vais essayé de m'dépatouiller!(un peu d'courage comme dirait rambo)
Juste une dernière chose, où mettre ce code? (je doit creer un nouveau module VB pour ça?)
Merci encore pour ta patience exemplaire! -
Contributeur1) les requete que j ai mises sont juste pour te montrer que le formulaire marche avec une reference aux requete et non au table.. donc t'a rien à changer pour ca..
2) Le controle des différence se fait dans la propriete activate du formulaire :
je te recopie ici le code :
Dim NomCtrl1, NomCtrl2, NomCtrlExt As String
Dim NomControle
NomControle = "Requête1"
For Each cCont In Form_Formulaire1.Controls
'MsgBox TypeName(cCont) & " - " & cCont.Name
Select Case TypeName(cCont):
Case "ComboBox"
'ici code combo
Case "TextBox"
'
NomCtrl1 = Left(cCont.Name, InStr(1, cCont.Name, ".") - 1) 'Nom controle avant ex Requête1.N°=> Requête1
NomCtrl2 = Left(NomCtrl1, Len(NomCtrl1) - 1) & "2" 'Nom controle avec 2=> Requête2
NomCtrlExt = Right(cCont.Name, Len(cCont.Name) - InStr(1, cCont.Name, ".") + 1) 'extentetion => .N°
Set cCont2 = Form_Formulaire1.Controls(NomCtrl2 & "" & NomCtrlExt) 'fait reference à Requête2.N°
If NomCtrl1 = NomControle Then 'Si le ctrl s'appele comme ceux qu on cherche .. ici Requête1
If cCont.Value = cCont2.Value Then
cCont.BackColor = 8421631 'met en rouge
cCont.Locked = True 'block
cCont2.BackColor = 8421631 'idem pour ctrl2
cCont2.Locked = True 'block
Else
cCont.BackColor = 16777215 'Transparent
cCont.Locked = False 'deblock
cCont2.BackColor = 16777215
cCont2.Locked = False
End If
End If
'if cCont.Value = cCont
'cCont.Locked = lockctrl
Case "ListBox"
'ici listbox
Case "BalloonCheckBox"
'ici BalloonCheckBox
Case "OptionButton"
'ici OptionButton
End Select
Next -
Donc, j'ai mon formulaire qui m'affiche bien les enregistrements de mes deux tables les uns en face des autres, ok
Là tu m'a envoyé bd1 avec deux requêtes et un formulaire et deux table, ces requetes ont (ou doivent avoir) pour but de montrer les écarts entres les champs des enregistrement des deux tables et de les afficher en rouge, ok
là tout est ok dans ce qu'il me faut, sauf que...
J'ui une grosse m**** et que j'ai quand même compris que ce que tu m'a donné je doit l'adapter à mon formulaire, mais je ne sais pas comment incorporer ce que tu m'a donné avec ma base de donnée, en clair où mettre les requêtes? doit je créer deux requetes similaire dans ma bd? -
Contributeuret donc, tu bloque où ?
-
Argh! j'uis un peu dans une impasse pour les requètes que tu m'a envoyées...C'est chiant d'être un noobie :(
En fait j'ai repris l'formulaire depuis que tu m'a envoyé bd1, et là actuellement j'essaye de trouver comment incorporer ce que tu m'a donné dans le formulaire... Dsl de cette incompétence. -
Ok c'est bon, j'ai capté;)
-
Contributeurc'est un des premier appel quand tu charge (ou recharge) un formulaire .. c'est la dedans que je met le code pour vérifier les données (cf la bd d exemple)
-
form_activate? pourrais tu me préciser ce que c'est stp?
-
Qu'est ce que sa signifit le message "trop de champs définits"?
-
SUPER!!!! :)))))))))))))))))))))))))))))))))))))
J vais faire ça, vraiment trop cool!
Je te recontact pour te donner des nouvelles, comment ça tourne et tout et tout.
Merci! -
Contributeurvoili :)
http://dl.free.fr/getfile.pl?file=/gQqXl5cI
Tu pourra faire un copier coller dans ton form_activate et y aura que 2 modifs:
NomControle = "Requête1" renommer COMP TRANSACTIONS
et
NomCtrl2 = Left(NomCtrl1, Len(NomCtrl1) - 1) & " R7" 'Nom controle avec 2=> Requête2
voili ;) -
Oki!
-
Contributeurpar défault on peut ecrire de dans.. donc
=>
moncontrol.Locked = true pour bloquer ;) -
En fait les tables à modif si il y a des erreur sont TRANSACTION et TRANSACTION R7.
Au fait comment on fait pour autoriser l'ecriture (la modif des données affichées dans les champs du formulaire). -
La dernière fonctionnalité attendu de ce formulaire c'est d'indiquer en rouge les champs qui ne corresponderaient pas (les écarts), est ce possible de faire cela?
-
ContributeurTOUT est possible ;)
donc, tu as des champs nommés COMP TRANSACTIONS R7.aaa COMP TRANSACTIONS R7.bbb ect et les meme nommés COMP TRANSACTIONS.aaa,COMP TRANSACTIONS.bbb, ect...
c'est super ! c'est exactement ce qu'il fallait ;)
Bon, je modifie un peu le code de ma bd exemple et je t envoie ca, avec les modif demandés :si == en rouge et block saisie, sinon, laisse libre... ah oui d ailleurs.. les 2 champs doivents rester libre une y a une table particuliere seulement à changer ??
-
-
J'espère que ce que je t'ai donné correspond bien à tes attentes...
- 1
- 2
- 3
- 4
- 5