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 21/06/2011, 10h38   #1
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Par défaut Formulaire et passage de paramètres

Bonjour,

Je débute en Access et j'ai du mal à trouver une réponse claire à ce que je voudrais faire.

Je vais essayer de l'expliquer :

J'ai un formulaire type tabulaire pour afficher une 'liste' d'enregistrements. Je voudrais rajouter un bouton qui permet d'accéder à un autre formulaire qui contient plus d'informations sur l'enregistrement sélectionné.

Est-ce qu'il est possible de récupérer mon champ contenant l'id de l'enregistrement et d'ensuite ouvrir le formulaire contenant les détails à partir de l'id ?

J'ai un peu cherché avec CurrentRecord et je pense qu'il faudrait utiliser une requête paramétrée pour la suite ?

Merci d'avance
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h50   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Il faudrait un peu plus de détail sur ton application.

Tu peux par exemple :

- envisager d'inclure dans ton formulaire actuel, un sous-formulaire qui donne en permanence le détail dont tu parles ;

- tu peux aussi, en cliquant sur un bouton, capter la valeur d'un champ de ton formulaire, qui peut servir de référence pour ouvrir l'autre formulaire à la bonne place.

Si tu as besoin d'aide, poste une BDD compatible Access2000 avec les données. Nous pourrons ainsi dialoguer avec un cas concret.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h23   #3
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
La première solution suggérée ne me convient pas trop.
L'idée de se premier formulaire c'est d'avoir une liste un peu comme un fichier excel avec plusieurs lignes et il risque d'y avoir pas mal de ligne. C'est pourquoi je voulais ouvrir dans un autre formulaire les informations présentées plus clairement.

La deuxième idée me parle déjà un peu plus. Comme je n'ai pas grand chose dans ma BDD, juste qqes valeurs rentrées pour des tests, je mets 2 captures d'écran avec.

Dans lst_it c'est ma liste (ne pas faire attention à l'esthétique je n'ai pas encore travaillé dessus!), quand il y aura toutes les données elle sera bcp plus grande que sur l'image. Avec le bouton en bout de ligne je voudrais cliquer dessus pour ouvrir le formulaire info_itv qui correspond à la ligne sur laquelle j'ai cliqué.

J'espère avoir été plus claire avec ça.
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 14h24   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Dans l’exemple annexé, un double-clic sur le champ N°Chantier du premier formulaire, provoque l’ouverture du formulaire2, en lui passant la valeur du champ comme paramètre :

Code :
1
2
3
Private Sub N°Chantier_DblClick(Cancel As Integer)
DoCmd.OpenForm "formulaire2", , , , , , Me.ActiveControl
End Sub
Ce qui provoque l’ouverture du Formulaire2.
Dans l’événement « sur ouverture » du Formulaire2, ce code :

Code :
1
2
3
4
5
6
7
8
9
Private Sub Form_Open(Cancel As Integer)
'Vérifier la présence d'un argument d'ouverture.
   'Il n'y en aurait pas si le formulaire avait été ouvert par la voie habituelle
If IsNull(Me.OpenArgs) Then Exit Sub  ' On ne fait rien si pas d'argument
'on se positionne sur le contrôle qui contient la valeur recherchée
DoCmd.GoToControl "N°ChantierF2"
'on positionne le formulaire sur cet enregistrement
DoCmd.FindRecord Me.OpenArgs
End Sub
Compris ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h22   #5
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
J'ai testé ton petit exemple et c'est vraiment ce à quoi je voudrais aboutir.

J'ai repris le code que tu as mis en remplaçant les bonnes choses.
Sauf qu'au moment de l'ouverture de mon 2e formulaire j'ai le message suivant qui s'affiche :

Erreur d'exécution '2110' :
Impossible d'activer le contrôle num_itv (qui correspond au champ sur lequel j'ai cliqué)

Je ne sais pas si ça change quelque chose, mais le numéro sur lequel se fait le double clic est le même que sur lequel je veux me placer dans le formulaire ouvert après le double clic
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h33   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Citation:
num_itv
est sans doute incorrect.

C'est le nom du contrôle que tu dois indiquer et non pas le nom du champ de sa source.

N'as-tu pas confondu ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h37   #7
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
J'ai vérifié c'est le même nom pour le contrôle source et celui vers lequel je veux me placer
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 16h04   #8
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Reproposition
Si tu as besoin d'aide, poste une BDD compatible Access2000 avec les données. Nous pourrons ainsi dialoguer avec un cas concret.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 16h16   #9
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Voilà.
Je voudrais passer du formulaire affich_ttes_itv vers le formulaire itv_TEST

Et le problème survient lorsque je double clic sur N° Chantier depuis affich_ttes_itv

Le but du formulaire itv_TEST c'est de présenter plus agréablement toutes les informations liées à un chantier.
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 18h14   #10
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Le problème vient du fait que ton contrôle "num_itv" est, au départ :
- non activé
- verrouillé.

Modifie le code comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Form_Open(Cancel As Integer)
 
'Se placer sur la bonne itv'
'Vérifier la présence d'un argument d'ouverture.
'Il n'y en aurait pas si le formulaire avait été ouvert par la voie habituelle
If IsNull(Me.OpenArgs) Then Exit Sub  ' On ne fait rien si pas d'argument
'on rend Num_itv non verouillé et activé
Me.num_itv.Enabled = True
Me.num_itv.Locked = False
'on se positionne sur le contrôle qui contient la valeur recherchée
DoCmd.GoToControl "num_itv"
'on positionne le formulaire sur cet enregistrement
DoCmd.FindRecord Me.OpenArgs
...
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 09h00   #11
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Alors j'ai bien modifié comme tu me l'as dit.
Maintenant mon formulaire s'ouvre sans message d'erreur mais il ne se place pas sur le numéro sur lequel j'ai cliqué. Il reste sur le premier enregistrement.
fonfek24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 09h44   #12
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

En fait les instructions pour ouvrir ton formulaire à la bonne page se limitent au début du code que je t'ai livré :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Form_Open(Cancel As Integer)
 
'Se placer sur la bonne itv'
'Vérifier la présence d'un argument d'ouverture.
'Il n'y en aurait pas si le formulaire avait été ouvert par la voie habituelle
If IsNull(Me.OpenArgs) Then Exit Sub  ' On ne fait rien si pas d'argument
'on rend Num_itv non verrouillé et activé
Me.num_itv.Enabled = True
Me.num_itv.Locked = False
'on se positionne sur le contrôle qui contient la valeur recherchée
 
DoCmd.GoToControl "num_itv"
'on positionne le formulaire sur cet enregistrement
DoCmd.FindRecord Me.OpenArgs

Je n'ai pas compris ce que tu fais ensuite dans ce code.

En tout cas, tu termines par ceci :

Code :
1
2
3
4
'Tri'
Forms("itv_TEST").OrderByOn = True
Forms("itv_TEST").OrderBy = "num_itv"
Forms("itv_TEST").Recalc
... qui a pour effet de repositionner le formulaire sur le premier enregistrement.

Transforme ces instructions en commentaires et tu constateras que ton formulaire s'ouvre à la bonne page.

Au fait que veux-tu faire après avoir ouvert ton formulaire à la bonne page ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 10h05   #13
Candidat au titre de Membre du Club
 
L3 MIAGE
Inscription : octobre 2009
Messages : 64
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : L3 MIAGE

Informations forums :
Inscription : octobre 2009
Messages : 64
Points : 12
Points : 12
Ah oui en effet ça donne exactement ce que je voulais.
Au départ j'avais trié le formulaire parce que je pensais l'utiliser d'une autre manière.

Je ne trouvais pas pratique de devoir faire défiler les enregistrements pour arriver à celui souhaité.

Je suis entrain de faire évoluer un fichier Excel en une base de données, pour offrir aux utilisateurs plus de fonctionnalités et d'automatiser également un certains nombres de traitements.

Pour finir, mon formulaire que j'ouvre à la bonne page permet de visualiser les informations plus agréablement et de pouvoir les éditer. Tandis que l'autre formulaire c'est juste destiné à lister pour ensuite que je puisse rechercher et trier dessus.

Je reconnais que je n'ai jamais fait de Access, c'est une découverte pour moi, alors j'essaye d'utiliser des connaissances que je peux avoir avec des applications écrites en php mysql et sybase powerbuilder
fonfek24 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 22h44.


 
 
 
 
Partenaires

Hébergement Web