Problème d'utilisation de la procédure Form_Load en VBA / Access
Résolu
kabrice01
Messages postés
1179
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je travail depuis sur une base de donnée en access. Pour cela j'ai voulu utilisé la procédure Form_Load dans VBA, pour un affichage automatique de certaines données mémorisées. Je crois avoir respecté la syntaxe, mais celui ci ne marche pas, il affiche une erreur lorsque je l'exécute: "erreur de compilation projet ou bibliothèque introuvable" ; je ne comprends pas pourquoi. Voici le code :

En faite, je voudrai que lorsqu'on utilise le formulaire F_Categorie_Maj, qu'on stocke avant de fermer le formulaire l'identifiant de la dernière catégorie visualisée. Puis lorsqu'on rouvrira ce formulaire, on pourra recupérer le contenu de cette variable et afficher automatiquement la catégorie correspondante. L'utilisateur aura donc l'impression d'être revenu au point où il était.
Pour cela, j'ai créé une variable globale X_CategId pour stocker l'identifiant de la table catégorie que je voudrai après utiliser avec la procédure Form_load. Mais ça ne marche pas alors que la syntaxe semble correcte
Private Sub Form_Load() 'Affiche automatique la catégorie grâce à l'identifiant mémorisé If X_CategId <> "" Then Z_CategId.SetFocus DoCmd.FindRecord X_CategId End If End Sub

En faite, je voudrai que lorsqu'on utilise le formulaire F_Categorie_Maj, qu'on stocke avant de fermer le formulaire l'identifiant de la dernière catégorie visualisée. Puis lorsqu'on rouvrira ce formulaire, on pourra recupérer le contenu de cette variable et afficher automatiquement la catégorie correspondante. L'utilisateur aura donc l'impression d'être revenu au point où il était.
Pour cela, j'ai créé une variable globale X_CategId pour stocker l'identifiant de la table catégorie que je voudrai après utiliser avec la procédure Form_load. Mais ça ne marche pas alors que la syntaxe semble correcte
A voir également:
- Problème d'utilisation de la procédure Form_Load en VBA / Access
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Acer quick access - Forum Logiciels
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
- Incompatibilité de type vba ✓ - Forum Programmation
3 réponses
Bonjour,
Je n'ai pas bien compris ton enchaînement, mais si j'ai compris qqch alors tu peux toujours appeler un autre formulaire B, alors ton formulaire A sera automatiquement masqué, sauf s'il s'agit d'une fenêtre modale ou indépendante, mais que tu peux masquer par la commande DoCmd.Minimize() et ensuite DoCmd.Restaure().
Tu as aussi la possibilité d'ouvrir ton formulaire en mode masqué puis de le faire apparaitre avec DoCmd.Select()
Bonne suite
Je n'ai pas bien compris ton enchaînement, mais si j'ai compris qqch alors tu peux toujours appeler un autre formulaire B, alors ton formulaire A sera automatiquement masqué, sauf s'il s'agit d'une fenêtre modale ou indépendante, mais que tu peux masquer par la commande DoCmd.Minimize() et ensuite DoCmd.Restaure().
Tu as aussi la possibilité d'ouvrir ton formulaire en mode masqué puis de le faire apparaitre avec DoCmd.Select()
Bonne suite
Bonjour a vous deux,
"erreur de compilation", car je comprends pas. Y a pas de control dans le formulaire avec ce nom
fichier modifie pour sauvegarde valeur du champ CategID et petite modif pour le docmd.findrecord : https://www.cjoint.com/c/EDDsUiggg75
"erreur de compilation", car je comprends pas. Y a pas de control dans le formulaire avec ce nom
fichier modifie pour sauvegarde valeur du champ CategID et petite modif pour le docmd.findrecord : https://www.cjoint.com/c/EDDsUiggg75
Re-...,
"si possible me dire pourquoi ça marque "erreur de compilation""
Pour la simple raison que tu lui dis d'aller sur "Z_CategId.SetFocus" sans lui indiquer ce que c'est.
Il faut écrire : "Me.Z_CategId.SetFocus", le préfixe "Me." indique qu'il faut prendre le formulaire courant.
Mais ATTENTION: Me ne peut être utiliser qu'avec les modules de classe, les procédures intégrées dans les formulaires ou les états. Sinon il faut utiliser le nom complet. Et idem pour tes autres procédures.
Et aussi, il faut faire attention au fait que les paramètres à l'intérieur aux procédures sont effacer à la fin de chaque procédure sauf si ce sont des paramètres publics
"si possible me dire pourquoi ça marque "erreur de compilation""
Pour la simple raison que tu lui dis d'aller sur "Z_CategId.SetFocus" sans lui indiquer ce que c'est.
Il faut écrire : "Me.Z_CategId.SetFocus", le préfixe "Me." indique qu'il faut prendre le formulaire courant.
Mais ATTENTION: Me ne peut être utiliser qu'avec les modules de classe, les procédures intégrées dans les formulaires ou les états. Sinon il faut utiliser le nom complet. Et idem pour tes autres procédures.
Et aussi, il faut faire attention au fait que les paramètres à l'intérieur aux procédures sont effacer à la fin de chaque procédure sauf si ce sont des paramètres publics
Salut F89....
Je n'avais pas vu et pas pu voir ton poste parce que j'étais en train de chercher le problème et la réponse quasiment en même temps que toi, d'autant que je répondais à une autre demande en même temps.
Cela dit, si nous avons vu la même faute, tant mieux. Mais il me semble que la syntaxe est plutôt : DoCmd.FindRecord X_CategId, , , acSearchAll, , acCurrent
Bonne suite à tous les deux.
Je n'avais pas vu et pas pu voir ton poste parce que j'étais en train de chercher le problème et la réponse quasiment en même temps que toi, d'autant que je répondais à une autre demande en même temps.
Cela dit, si nous avons vu la même faute, tant mieux. Mais il me semble que la syntaxe est plutôt : DoCmd.FindRecord X_CategId, , , acSearchAll, , acCurrent
Bonne suite à tous les deux.
Bonjour,
voir:
https://docs.microsoft.com/fr-fr/office/vba/api/access.docmd.findrecord?redirectedfrom=MSDN
DoCmd.FindRecord X_CategId, , , acSearchAll, , acCurrentCes argument sont par defaut
voir:
https://docs.microsoft.com/fr-fr/office/vba/api/access.docmd.findrecord?redirectedfrom=MSDN
Cordialement
kabrice01