IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Objet de classe parasite ? [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut Objet de classe parasite ?
    Bonjour,
    Ma base de données utilise plusieurs boutons faisant appel à des codes VBA, la plupart très simples du type OpenForm ou OpenTable. Depuis peu, j'ai un message d'erreur systématique sur la plupart d'entre eux ("Microsoft Visual Basic pour Applications - fichier introuvable") qui m'envoie en mode débogage.
    Le problème semble remonter à la modification d'un état, sur lequel j'ai tenté d'ajouter, puis supprimé un bouton de commande. Après moult manipulations hasardeuses (qui m'ont entre autre vérolé mes sauvegardes récentes ), j'ai depuis 3 objets "Report_...", vides et/ou "faisant référence à un état inexistant", et impossibles à supprimer. Si quelqu'un voit de quoi il en retourne...?
    Merci de votre aide !

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Quel était le rôle du bouton supprimé ?
    Un problème bien posé est à moitié résolu

  3. #3
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Il s'agissait de passer d'un état à une autre version du même état . Je ne suis pas allé très loin quoi qu'il en soit.

  4. #4
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    je voulais dire, une version plus exhaustive

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    ???
    je ne vois pas ce que tu veux dire...
    et je n'ai pas d'idée...

    Vraiment à tout hasard, regarde tout de même si en Propriétés/Filtre de l'état, ou du formulaire qui l'appelle, il n'existe pas un filtre non souhaité.
    Un problème bien posé est à moitié résolu

  6. #6
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Pas de filtre qui traine... L'appel de procédure "On click" dans l'état a par ailleurs bien été supprimé. L'état s'appuie sur une requête sans code VBA associé. D'ailleurs l'état lui même s'ouvre correctement
    Ci joint une copie d'écran du projet VBA, avec l'explorateur d'objet ouvert. Le premier objet "report" fait référence à l'état existant et fonctionnel, le 2e et le 3e sont vides.
    Nom : 2018-04-12 11_39_42-Microsoft Visual Basic pour Applications - consoSCO - [Explorateur d'objets].png
Affichages : 246
Taille : 79,2 Ko

  7. #7
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    1) est-ce que chacun des 3 états s'ouvre normalement en direct (en cliquant dans le volet de recherche, à gauche)
    2) comment sont-ils appelés ? OpenReport?
    3) fais nous un copier-coller des codes d'ouverture (entre les balises # de ton message).
    Un problème bien posé est à moitié résolu

  8. #8
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    En l’occurrence seul le 1er état existe encore. Les 2 autres sont pour l'un une sorte de doublon fantôme apparu lors de mes tentatives précédentes, pour l'autre un état supprimé.
    Ce 1er état est appelé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande73_Click()
    Dim stDocName As String
        Dim stLinkCriteria As String
        stDocName = "E417_Fact-analyse"
        'apercu.Visible = True
     
        DoCmd.OpenReport stDocName, acViewReport, , stLinkCriteria
    End Sub
    Chose intéressante, j'ai un messages d'erreur de cette manière, mais pas en l'ouvrant directement. Après vérification, la plupart des boutons (pas tous !?) génère cette même erreur.

  9. #9
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    La clause Where du OpenReport n'a aucune valeur ?
    Un problème bien posé est à moitié résolu

  10. #10
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Non, c'est la requête en amont qui réclame une information (dans critères : "[N° de facture ?]") --> inputbox automatique standard

  11. #11
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Déjà tu peux simplifier le code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande73_Click()
        DoCmd.OpenReport "E417_Fact-analyse", acViewReport
    End Sub
    Donc :
    - ton état a pour source une requête,
    - cette requête a un critère qui est la réponse à l'InputBox.

    Comment récupères-tu, dans la requête, la valeur donnée à l'InputBox ?
    Fait un copier-coller du SQL.
    Un problème bien posé est à moitié résolu

  12. #12
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    non, pas de SQL ici (enfin pas explicitement) puisque dans ma requête je procède comme ceci :
    Nom : 2018-04-12 14_48_24-Microsoft Access - consoSCO _ Base de données (Access 2007 - 2010).png
Affichages : 217
Taille : 5,9 Ko
    (OK merci pour la simplification, tu confirme mon intuition )

  13. #13
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    [N° de facture ?] est le nom de la variable qui reçois l'InputBox ?
    Donne le code concernant l'InputBox.

    Remarque générale : évite d'employer des espaces et des caractères spéciaux dans les noms de champs, variables, contrôles, objets, fichiers... même si ça passe dans certains cas.
    Utilise plutôt des noms condensés, parlants et facilement lisibles. Exemples : Nfacture, t_Factures, r_Commandes, CodePostal...
    Un problème bien posé est à moitié résolu

  14. #14
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Entendu. Pas de code (apparent) pour l'inputbox, puisque Access la génère automatiquement. J'ai quand même l'intuition que le problème vient plutôt d'un code corrompu par la suppression "mal digérée" d'un état et/ou d'un contrôle, non ? Malgré leurs approximations, ma requête et mon état fonctionnent bien en eux-mêmes...

  15. #15
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Ok

    suppression "mal digérée" d'un état et/ou d'un contrôle
    Lance une Compilation dans Débogage (Menu)
    Fait des recherches avec les noms des contrôles ou objets supprimés sur l'ensemble du projet (fenêtre Recherche)
    Un problème bien posé est à moitié résolu

  16. #16
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Le simple lancement de la compilation me fait renvoie à la même erreur "fichier introuvable". La recherche du contrôle "Boîte706_Click" (jugé problématique - cf. précédente copie d'écran) par exemple, sur procédure ou module en cours est infructueuse (normal) ; par contre on retombe sur "fichier introuvable" quand la recherche se fait sur l'ensemble du projet. Or ce n'est pas le cas avec une recherche d'un terme commun ("click") À CONDITION QUE L'ON SE POSITIONNE DANS UN DES OBJETS RÉPUTÉ VALIDE comme "Form_xxx". En revanche, la recherche de "click" sur projet en cours, depuis "Report_E417..." génère une erreur "fichier introuvable"

  17. #17
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    la compilation me fait renvoie à la même erreur "fichier introuvable"
    oui, mais sur quelle ligne de code ??? (en surbrillance)

    Il faut tout passer en revue avec la compilation et régler chaque pb. A relancer à chaque fois.
    Pour la recherche, il faut la faire avec chaque nom de contrôle ou objet que tu as supprimé, et sur l'ensemble du projet (cocher Projet en cours)
    Un problème bien posé est à moitié résolu

  18. #18
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    C'est bien le pb (désolé si j'ai pas été clair) : au lancement (Débogage --> compiler Database 2), j'ai le message d'erreur !
    Et pour les recherches, relis-moi, j'ai bien distingué les résultats selon si elles se font sur procédure, module, ou ensemble du projet.
    Au final, le message d'erreur apparait quand :
    - recherche d'un terme spécifique à "Report_E417", depuis "Report_E417", sur procédure / module / ensemble du projet
    - recherche d'un terme spécifique à "Report_E417", depuis un objet réputé valide ("Form_xxx"), sur ensemble du projet
    - recherche d'un terme générique, depuis "Report_E417", sur procédure / module / ensemble du projet

  19. #19
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    j'ai le message d'erreur !
    SUR QUELLE LIGNE DE CODE ???

    Pour la recherche, tu te mets sur Projet en cours !!! (cela est suffisant)
    Ensuite tu indiques le nom d'un contrôle ou objet que tu as supprimé. Tu parlais d'un bouton par exemple.
    Le but est de rechercher dans le code d'éventuelles utilisations de contrôles ou objets supprimés. (même si Access en signale de lui-même)
    Un problème bien posé est à moitié résolu

  20. #20
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Bon, visiblement ce que j'avais de mieux à faire face à ce qui ressemble fort à un problème de bibliothèque (https://support.microsoft.com/fr-fr/...ccess-database), était de créer une nouvelle base et d'importer tous les éléments de l'ancienne : ça a l'air de fonctionner, mes objets fantôme ont disparu...
    Merci titi95 d'avoir passé du temps sur la résolution de mon problème !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Acceder a un objet de classe
    Par maxxou dans le forum Windows Forms
    Réponses: 11
    Dernier message: 25/09/2006, 18h19
  2. Supprimer un objet de classe dans visual basic
    Par Access Newbie dans le forum Access
    Réponses: 4
    Dernier message: 02/08/2006, 20h26
  3. creation d'objet de classe a partir de string
    Par mencaglia dans le forum C++
    Réponses: 1
    Dernier message: 14/03/2006, 09h56
  4. [JSP][STRUTS] Passer des objets à une classe action
    Par maphi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/08/2005, 16h55
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo