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 :

Code VBA ne s'exécute pas [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut Code VBA ne s'exécute pas
    Bonjour,

    On m'a demandé de reprendre une base de données créée il y a deux ans par un stagiaire sur la gestion des accès de divers salles et bâtiments. Cette base est sur un réseau, les tables sont liées. Après avoir récupéré le mot de passe qui protège le code, je suis rentré dedans. Et là, j'ai une reaction un peu déroutante que je ne comprends pas :

    Je peux modifier le code, lancer l'application et vérifier mes modifications. Je peux aussi changer la structure des tables.
    Par contre, depuis ce matin par exemple, le formulaire d'accueil ne se lance pas, rien ne se passe, pas de message d'erreur, Acces ne plante pas. J'ai beau cliquer sur mon formulaire pour le passer en mode affichage, rien ne s'affiche. Je suis alors allé dans le code sur l'événement Open du formulaire et j'ai tout mis en commentaires afin qu'aucune ligne de code ne soit active et là, mon formulaire s'ouvre si je clique dessus !!
    Evidemment le code n'est pas execute puisqu'il est en commentaires. Dès que je remets en service la moindre ligne, un IF par exemple, le formulaire ne s'ouvre plus à nouveau et sans message d'erreur quelconque.

    Si je fais de même avec un autre formulaire qui a un code, il est exécuté (je le vois en mettant un piège sur une ligne, le code s'arrête bien dessus).

    J'ai l'impression que s'il y a une erreur, VBA refuse d'exécuter le code entier de la procédure et ne donne aucun message d'erreur. Comme ce n'est pas une application que j'ai créée, je ne vois pas comment mon prédécesseur aurait pu coder cela. Est-ce possible ?
    Ne maitrisant pas les bases de données en réseau, est-ce une consequence ?
    Existe t-il une maintenance type pour ce genre de base en réseau, des propriétés à cocher ou décocher ?
    Comment faire afficher les erreurs VBA s'il y en a ?

    Merci pour votre aide, je m'en remets à vous ...

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    Bonjour,

    Mettre tout en commentaire ne fait pas avancer . Il faut plutôt mettre un point d'arrêt pour voir si le code est exécuté.

    Eventuellement en mettre un sur la première ligne exécutée dans l'application.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    C'est aussi ce que j'ai fait, j'ai mis un point d'arrêt et le code n'est pas visité puisque VBA ne s'arrête pas dessus !

    J'ai ajouté les instructions On Error Goto en début, renvoyant vers un bout de code qui me donne le numéro et la description et là j'ai bien un message d'erreur quand il y en a une (je l'ai provoqué). Et depuis, à ma grande surprise, mon formulaire s'ouvre bien.
    Mais si je place un point d'arrêt dans la procédure, il ne s'y arrête pas ! Et le code n'est pas exécuté puisque même un debug.print n'affiche rien.

    Je précise que j'ai fait une copie de la base (sur mon C afin de l'explorer. Les liens vers les tables sont par contre actifs.

    C'est la première fois que je rencontre ce dysfonctionnement.
    C'est comme si l'ancien développeur avait inhibé un tas de messages, d'erreurs, de propriétés et que le code VBA ne réagit pas comme d'habitude.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    L'application a été écrite pour 2010 ou pour une version antérieure ?

    Essaye ceci :

    http://blogaccess.free.fr/?p=75

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Merci pour votre aide précieuse.

    Je vais tenter de récupérer le fichier (format accde) sur le serveur et le traiter localement.
    Tout a bien été développé sur le même serveur avec les mêmes versions d'access.

    Cet après-midi j'ai tout de même testé quelque chose :
    Si je place un dans le corps de la procédure d'ouverture du formulaire d'accueil (événement Form_Open), j'ai bien le mot coucou qui s'écrit dans la fenêtre de débogage. Si je place cette même commande dans une boucle IF dont la condition ne sera jamais vraie, le code n'écrit pas le mot coucou dans la fenêtre prévue pour ça.

    J'en déduis que le code s'exécute bien contrairement à ce que je dis dans le titre. Par contre, l'éditeur VBA ne fonctionne pas comme d'habitude. Les points d'arrêt n'arrêtent pas le déroulement du programme et quand j'ai une erreur dans la procédure, si je ne la traite pas par un la procédure ne se lance pas du tout et aucun message d'erreur n'apparait. Access ne plante même pas ... mon formulaire ne s'ouvre pas !
    Déroutant.


  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    J'en déduis que tu n'as pas appliqué la procédure fournie dans le lien...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Bonsoir,

    J'ai appliqué la procédure qui a fonctionné sans problème mais qui n'a pas apporté de correction.
    Mon code s'exécute bien finalement mais la gestion des erreurs par l'éditeur VBA ne se fait pas, les formulaires dans lesquels il y a une erreur ne s'ouvrent pas, les points d'arrêt sont inopérants.
    Ca ne vient pas de l'éditeur VBA ni de son paramétrage (j'ai testé une autre base de données à moi et tout fonctionne bien).

    Je pense que le stagiaire qui a conçu cette base a réalisé un fichier particulier ...


    Merci pour votre aide en tout cas.
    Bon week-end.

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    Si les points d'arrêt ne fonctionnent pas c'est que la décompilation n'a pas fonctionnée.
    Normalement, l'application s'ouvre 2 fois et sa taille baisse sensiblement à fin.

    Coche l'option "Arrêt sur toutes les erreurs" dans VBE, options, général. Vérifie qu'il n'y ai pas un On Error GoTo 0 dans l'entête d'un module.

    Eventuellement poste ton appli, je la regarderais.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Bonsoir,

    Merci pour votre attention et votre aide.

    J'ai peut-être mal compris et exécuté la procédure car je ne pense pas avoir constaté deux redémarrages de l'application. Voici ce que j'ai fait exactement :
    1. J'ai copié les lignes dans un fichier Wordpad et sauvegardé le tout dans un fichier .cmd dans le répertoire de ma base de données.
    2. J'ai copier les quelques lignes dans le premier formulaire de mon application afin qu'elle ne démarre pas.
    3. J'ai glissé une copie de mon application sur le fichier .cmd
    Une fenêtre noire s'est ouverte et des lignes ont défilé. Access s'est ouvert et le sablier est resté environ 1 minute avant que le compactage ne commence.
    Je ne me souviens plus si j'ai refermé la base ou si elle s'est refermée seule. Mais c'est tout ce qui s'est passé.

    Je ne comprends pas l'action de décompiler à vrai dire. C'est dans la procédure automatique ou je dois le faire manuellement ?

    Sinon, j'ai aussi coché l'option "Arrêt sur toutes les erreurs" dans VBE sans résultat.

    Si je dois vous envoyer la base, ça va être sport. Elle est sur un serveur de l'entreprise et chez nous, la sécurité informatique n'est pas un vain mot. Tous les lecteurs CD et ports USB sont verrouillés.
    Mais bon, je vais m'arranger avec le service informatique ... Dites-moi s'il vous faut aussi les tables puisque les tables sont liées et donc ailleurs que dans le répertoire de l'application.

    Bonne soirée à vous.

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    La décompilation permet de casser tout les liens entre VBA et l'interface et de recréer le tout au redémarrage. C'est une procédure non documentée qui n'est disponible qu'en ligne de commande.

    Avec les tables vides pour pouvoir lancer l'exécution.

    On peut faire l'échange via MP si tu ne souhaites pas que l'appli soit diffusée sur le forum.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    C'est une procédure non documentée qui n'est disponible qu'en ligne de commande.
    Alors là, je n'ai rien tapé comme invite de commande : quelle est la ligne à saisir pour décompiler si ça doit être fait manuellement ?
    Parce que du coup, je vais retenter ma chance mais avec cette manipulation supplémentaire (décompilation). Je pensais que c'était réalisé dans le fichier .cmd ...

    Ok je récupère la base de données sans les tables et je vous l'envoie en MP.

    Bon dimanche.

  12. #12
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Je crois avoir trouvé ici dans un tuto concernant les lignes de commande :

    Option /DECOMPILE
    Ligne de commande "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE"_"C:\Mes Documents\bd1.mdb"_/decompile
    Description Annule le marquage compilé du code VBA. Dans le menu Débogage, l'option Compile est à nouveau disponible.

    Je peux utiliser cette syntaxe ?

    Bonne journée.

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    Le cmd fait exactement ça mais en plus, empêche le démarrage de l'application, fait une copie de sauvegarde et termine par un compactage. Tout est détaillé dans mon billet.

    C'est dans mon tuto que tu as pris cette ligne ?
    http://loufab.developpez.com/tutorie...lignecommande/
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Oui, j'ai cherché ici d'autres items sur le sujet et je suis tombé sur cet article très intéressant.
    Je pense que je m'en servirai prochainement pour gérer, comme cela est expliqué, une mise à jour d'une base de données avec une procédure au démarrage.
    Très bel article.

    Merci encore à vous pour toutes ces connaissances offertes.

    Je retente la manipulation demain en compactant après l'action du cmd.

    A bientôt.

  15. #15
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut Transfert de la base de données
    Bonsoir,

    Comme prévu, je vous envoie la base de données qui pose problème. Après deux autres tentatives, je n'ai pas réussi à récupérer la gestion des erreurs.
    Par contre, quand j'utilise la petite "icône pièces jointes" dans ce message, ça ne veut pas.
    Poisse quand tu nous tiens ...


  16. #16
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    Je t'ai envoyé mon mail. C'est plus pratique pour envoyer les éléments.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 146
    Par défaut
    Effectivement gros problème dans cette application. Mais plus de fichier endommagé qu'un problème de conf.

    Je te conseille de vérifier que ton ACCESS est en état (réparation/réinstallation) et surtout qu'il est bien à jour avec les dernière versions de correctif.

    La solution a été de créer un nouveau fichier et de tout importer.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Par défaut
    Merci pour tout.

    J'ai créé un nouveau fichier et tout importé ... et ça fonctionne.

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

Discussions similaires

  1. erreur de code VBA & je ne comprend pas
    Par pascalito dans le forum IHM
    Réponses: 12
    Dernier message: 31/10/2010, 22h56
  2. [AC-2007] Code qui ne s'exécute pas
    Par Triad30 dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/07/2010, 20h42
  3. Code JS qui s'exécute pas dans fenêtre pop in
    Par Le Grand Habchkleu dans le forum jQuery
    Réponses: 6
    Dernier message: 18/12/2009, 20h43
  4. Le code vba ne s'exécute pas.
    Par Halima91 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/03/2007, 11h45
  5. probleme code vba ne s'execute pas apres instruction sql
    Par arnogef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/12/2005, 13h34

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