Problème d'utilisation de la procédure Form_Load en VBA / Access

Résolu/Fermé
kabrice01 Messages postés 1180 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 12 avril 2021 - 29 avril 2015 à 09:21
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 30 avril 2015 à 08:38
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 :
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

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
0
kabrice01 Messages postés 1180 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 12 avril 2021 28
Modifié par kabrice01 le 29/04/2015 à 17:25
Merci, mais Non ce n'est pas cela mon problème désolé! voici le lien du fichier access, tu peux l'uploader : https://www.zeta-uploader.com/2063179950 et puis exécuter le formulaire F_Categorie_Maj et si possible me dire pourquoi ça marque "erreur de compilation", car je comprends pas.
Cordialement
kabrice01
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 avril 2015 à 18:31
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
0
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 29/04/2015 à 19:01
Bonjour Tessel75,
lisez ce que j'ai mis ici:
f894009 29 avril 2015 à 18:31
0
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.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Tessel75
30 avril 2015 à 08:38
Bonjour,

DoCmd.FindRecord X_CategId, , , acSearchAll, , acCurrent 
Ces argument sont par defaut
voir:
https://docs.microsoft.com/fr-fr/office/vba/api/access.docmd.findrecord?redirectedfrom=MSDN
0
kabrice01 Messages postés 1180 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 12 avril 2021 28
29 avril 2015 à 23:42
Désolé de répondre si tardivement. Mais maintenant c'est plus clair. Merci beacoup à vous
0