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 :

Pb de transfert de variable [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut Pb de transfert de variable
    Bonjour et bonne année à tous

    Je vous écris afin de vous soumettre un soucis de contenu de variable.
    Mon pb est apparu quand j'ai voulu améliorer ma gestion d'erreur en générant un journal Eventlog et en voulant récupérer l'ensemble de la chaine d'exécution.
    La philosophie: Je gère les erreurs dans une procédure d’entête qui peut faire appelle à diverse fonction ou procédure.
    Chaque fonction ou procédure stocke leur nom ainsi que celui de leur module dans un variable globale puis remonte le tout à la procédure d'entête qui écrit dans l'eventlog.

    Voici comment j'ai procédé

    J'ai déclaré les variables Fonctions, Modules, Commandes en tant que variables globales de mon projet un module appelé Commun_Declarations_Globales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Variable de gestion des erreurs
    Public Fonctions As String
    Public Modules As String
    Public commandes As String
    Sur un formulaire (F_Acceuil), un bouton fait appel à une fonction donc voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Liste_fic()
    '***************************************
    '*  Gestion des erreurs Module de tête *
    '***************************************
      Dim i As Long
     
       ' Récupére le nom de la procédure active
      Fonctions = "Liste_fic"
      Modules = Module.Name
      On Error GoTo Erreur
    '*************************************************************
    '*************************************************************
    1    Me.T_Date_Inc_GLPI.Value = Date_fichier(Source_Import_GLPI_Incidents_Demandes, "ExportTicketsQuotidienMOA.csv")
     
      Exit Sub
    Erreur:
      commandes = "Ligne " & Erl() & " : " & commandes
      Call EventLog(Modules, Fonctions, commandes, Err.Number, Err.Description)
      commandes = Empty
      Modules = Module.Name
     
     
       ' Récupére le nom de la procédure active
      Fonctions = "Liste_fic"
      Resume Next
    La fonction Date_fichier du module Commun_Systeme_Fichiers contient le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    '************************************
    '*  Gestion des erreurs sous module *
    '************************************
      Dim i As Long
     
      ' Récupére le nom de la procédure active
      With Application.VBE.ActiveCodePane
        .GetSelection i, 0, 0, 0
        Fonctions = Fonctions & "\" & .CodeModule.ProcOfLine(i, 0)
      End With
      Modules = Modules & "\" & Application.VBE.SelectedVBComponent.Name
    '*************************************************************
    '*************************************************************
     
    O = 5 / 0
    End Function
    Elle fait bien sûr autre chose mais c'est pour les tests

    Voila ce que je voulais c'était inscrire Modules=Form_F_Acceuil\Commun_Systeme_Fichiers et dans Fonctions=Liste_fic\Date_fichier

    Cela fonctionne parfaitement en mode Pas à Pas en revanche si je lance la fonction sans pas à pas, j'obtiens
    Modules=Form_F_Acceuil\Form_F_Acceuil et dans Fonctions=Liste_fic\Liste_fic

    Quelqu'un pourrait-il me dire d'où vient mon problème je fouille internet depuis quelque temps mais je trouve pas.

    Pourquoi quand il passe dans la fonction Date_fichier il récupère bien le module et la fonction et pas si j'execute sans passer dans Date_Fichier en mode pas à pas???

    Je viens de faire le test en n'appelant pas la gestion d'erreur depuis le formulaire mais depuis un fonction stocker dans un module et c'est pareil sauf qu'il a fallu que je change la ligne:
    Par la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Module = Application.VBE.SelectedVBComponent.Name
    Encore merci pour votre aide.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Bonjour,

    Citation Envoyé par alexandre.beaujault Voir le message
    Mon pb est apparu quand j'ai voulu améliorer ma gestion d'erreur en générant un journal Eventlog et en voulant récupérer l'ensemble de la chaine d'exécution.
    Ta méthode appelle erl ce qui suppose de numéroter les lignes du code et permet donc se savoir précisément quelle est la ligne qui a buggué. Que cherches-tu à récupérer de plus ? Les contenus des variables au moment de son exécution ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci pour votre réponse et désolé pour mon gros retard, j'ai du basculer sur un autre sujet.
    Je souhaitais stocker dans mon journal le nom du module ainsi que le nom de la fonction/procédure ayant générer l'erreur enfin la ligne.

    J'ai fini par réussir à générer cet eventlog.

    Voici comment j'ai fait si cela peut servir à d'autre.
    J'ai commencé par créer une table contenant les champs voulu:
    Obj_Origine
    S_Obj_Origine
    Commande
    Code_erreur
    Description
    Date
    Utilisateur

    Puis en tête de chaque module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Modules As String = "Commun_Administration"
    enfin dans chaque fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    '  ***************************************
    '  *  Gestion des erreurs Module de tête *
    '  ***************************************
      Dim i As Long
      Dim Fonctions As String
      Dim Commandes As String
      Fonctions = "Controle_VersionBase"
     
      Commandes = "Entrée dans la procédure"
    '  Enregistre l'entrée dans le module
      Call EventLog(Modules, Fonctions, Commandes)
     
      On Error GoTo Erreur
    '*************************************************************
    '*************************************************************
    En fin de fonction/module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Erreur:
      If Erl() <> 0 Then
        If Commandes <> "" Then
          Commandes = "Ligne " & Erl() & " : " & Commandes
        Else
          Commandes = "Ligne " & Erl()
        End If
      End If
      Call EventLog(Modules, Fonctions, Commandes, Err.Number, Err.Description)
    La gestion de fin de module doit être étoffé en fonction des cas.

    Résultat je suis à même de surveiller l'ensemble de la base pour tous les utilisateurs.

    Encore merci pour votre aide précieuse que ce soit sur le forum ou dans les FAQ. Sans devellopez .net je n'aurai pas pu progresser à ce point.

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

Discussions similaires

  1. pt->py:transfert de variables
    Par kowabounga dans le forum Zope
    Réponses: 1
    Dernier message: 17/08/2006, 11h00
  2. Session: pour le transfert de variables
    Par arti2004 dans le forum Langage
    Réponses: 15
    Dernier message: 28/05/2006, 18h16
  3. [VBA-E]Userform et transfert de variable
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/03/2006, 09h16
  4. transfert des variables de sessions
    Par Julie 2006 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 26/02/2006, 11h58
  5. [vb] Transfert de variables et listbox
    Par lepiou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/01/2006, 17h39

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