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 :

variable déclarée dans un module qui se vide à chaque erreur


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 264
    Par défaut variable déclarée dans un module qui se vide à chaque erreur
    Bonjour à tous,
    j ai un ensemble de variable que j ai déclaré dans un module en global pour qu elles soient vues.
    Certaines se chargent directement au demarage de l appli et une autre, la plus importante se charge en fonction du choix de l utilisateur.
    Ces variables sont ensuite utilisées dans tous mes formulaires sauf que quand j ai la moindre erreur quand je code ou quand je fais des essais alors là tout plante. J ai l impression que ces variables se vident. Et là je suis bligé de tout relancer ce qui est embetant a chaque fois que j ai une erreur.

    Donc j aurais voulu savoir comment contourner cela.
    Meric a tous.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bonjour,
    la "durée de vie" des variables peut être un problème si tu veux gérer ces informations à d'autres moments que dans le module où elles sont créées.

    Personnellement, je privilégie un stockage de ces données dans une table, dite "table de paramètres".

    Avec cette table, deux fonctions, une de mise à jour, et une de récupération de données.

    Cette approche te conviendrait-elle ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 264
    Par défaut
    En effet je les charge à l ouverture de mon appli via une table. Les variables déclarées dans le module recupere les données de cette table une fois pour toute via ce module et ensuite je les utilise dans tous mes formulaire.Cela pour éviter de travailler dans chaque form avece des recordsets

    Pour ma variable tampon1 déclarée dans un autre module elle se charge en tout debut de l appli en fonction du choix de l utilisateur et cette variable devient la clé de toutes les tables sources de mes formulaires alors quand tampon1 se vide tous mes formlaires sont inaccessibles et vive les messages d erreurs

    Je suis partant pour ta solution. Si tu pouvez m en dire plus sur comment procéder.
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Ces variables sont ensuite utilisées dans tous mes formulaires sauf que quand j ai la moindre erreur quand je code ou quand je fais des essais alors là tout plante. J ai l impression que ces variables se vident. Et là je suis bligé de tout relancer ce qui est embetant a chaque fois que j ai une erreur.
    Quand tu parles d'erreur, je suppose qu'il s'agit d'un plantage dans le process d'une procédure?
    Dans ce cas, c'est normal que tes variables se vident puisque ton application cesse de fonctionner !

    L'idée de jpcheck de stocker dans une table paramètres est intéressante mais je ne pense pas qu'elle apportera une solution à ton problème (conséquence d'un plantage dans le déroulement de ton process)
    Ton problème trouvera sa solution à partir du moment où ton code sera au point.

    Bonne continuation.
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    les variables globales sont réinitialisées
    • Lorsqu'on clique sur le bouton Réinitialiser dans VB
    • Lorsqu'on clique sur Fin dans la boîte de dialogue consécutive à une erreur d'exécution

    (Y a-t-il d'autres cas ? Sais pas)

    Une gestion des erreurs évite la réinitialisation du projet.

    Pour des données critiques je procède comme Jpcheck.
    Je stocke dans une table et je lis dans cette table à l'aide d'une fonction perso.
    -> pas de variables globales

    Quelques fois je choisi une solution intermédiaire.
    Je lis dans les valeurs dans la table et les mets dans des variable globales.
    -> par exemple une Sub Initialisation()
    En début de Sub ou Function utilisant ces variables globales, je vérifie que l'une d'entre elles n'est pas vide.
    Si elle est vide j'appelle la procédure Initialisation()

    A+

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

Discussions similaires

  1. Variables différentes dans plusieurs modules VBA
    Par soeursourire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2008, 13h45
  2. Réponses: 2
    Dernier message: 20/06/2008, 13h56
  3. Réponses: 2
    Dernier message: 24/10/2007, 17h00
  4. accéder à une variable déclarée dans un autre fichier
    Par sg.forums dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/10/2006, 09h20
  5. Variable Globale dans un module de formulaire.
    Par wisiwi dans le forum Access
    Réponses: 5
    Dernier message: 30/03/2006, 14h03

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