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 :

Option Explicit et erreur variable non déclarée


Sujet :

VBA Access

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 999
    Points : 2 245
    Points
    2 245
    Par défaut Option Explicit et erreur variable non déclarée
    Bonjour

    J'ai une application qui fonctionne trés bien mais qui n'a pas d'Option Explicit sur tous ses modules. L'outil d'analyse des performances d'access m'a mis le doigt la dessus et je mets donc Option explicit sur tous mes formulaires...

    Mon problème : Sur certains modules, cela m'entraine des erreurs de compilation "Variable non définie"

    par exemple sur ce code, sur la variable "Cancel"
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Option Compare Database
    Option Explicit
    Private Sub Commande14_Click()
    'variable stockant la réponse donnée dans la boite de dialogue
        Dim intReponse As Integer
        'si il y a eu des modifications on demande la confirmation
        If Me.Dirty Then
            'message pour l'utilisateur
            intReponse = MsgBox("Voulez-vous enregistrer ?", vbYesNoCancel, "Confirmation")
            Select Case intReponse
                Case vbYes
                    Cancel = False
                    If Cancel = True Then
                     'on ne ferme pas
                    Else
                     Me.DateLastModif = Date
                     DoCmd.Close acForm, "TpsSaisie_Edit"
                     If CurrentProject.AllForms("DemandeIntervention").IsLoaded Then
                        Call MiseAJourAffichTempsSaisiDemandeIntervention
                     End If
                    End If
                Case vbNo
                    ' non est choisi donc on annule les modifications
                    Me.Undo
                    DoCmd.Close acForm, "TpsSaisie_Edit"
                Case vbCancel
                    ' Annuler est choisit donc on annule la manipulation
                    Cancel = True
            End Select
     
        Else
            DoCmd.Close acForm, "TpsSaisie_Edit"
        End If
    End Sub
    Je rappelle que ce code fonctionne trés bien sans Option Explicit

    Comment Option Explicit travaille t-il pour améliorer la vitesse du code ? Comment éviter ses erreurs ?

    Merci par avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    Pour comprendre Option Explicit ...

    À la lecture de ton code, non seulement la variable Cancel n'est pas déclaré, mais elle me semble bien inutile ...

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Private Sub Commande14_Click()
    'variable stockant la réponse donnée dans la boite de dialogue
        Dim intReponse As Integer
        'si il y a eu des modifications on demande la confirmation
        If Me.Dirty Then
            'message pour l'utilisateur
            intReponse = MsgBox("Voulez-vous enregistrer ?", vbYesNoCancel, "Confirmation")
            Select Case intReponse
                Case vbYes
                    'Pourquoi donner une valeur True à Cancel puis ensuite 
                    'vérifier quel valeur il a
                    'On met donc cette partie en commentaire                 
                    'Cancel = False
                    'If Cancel = True Then
                        'on ne ferme pas
                    'Else
                         Me.DateLastModif = Date
                         DoCmd.Close acForm, "TpsSaisie_Edit"
                         If CurrentProject.AllForms("DemandeIntervention").IsLoaded Then
                              Call MiseAJourAffichTempsSaisiDemandeIntervention
                         End If
                    'End If
                Case vbNo
                    ' non est choisi donc on annule les modifications
                    Me.Undo
                    DoCmd.Close acForm, "TpsSaisie_Edit"
                Case vbCancel
                    ' Annuler est choisit donc on annule la manipulation
                    'Cancel = True
                    Exit sub
            End Select
            
        Else
            DoCmd.Close acForm, "TpsSaisie_Edit"
        End If
    End Sub

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 999
    Points : 2 245
    Points
    2 245
    Par défaut
    Ok, je n'ai pas pris le bon exemple de module pour illustrer mon problème

    J'en ai eu d'autres plus difficiles à optimiser...

    Mais ca y est j'ai de l'option explicit partout !

    Merci

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

Discussions similaires

  1. [Design] Erreur variable non déclarée ou non assignée
    Par Arnard dans le forum Visual Studio
    Réponses: 3
    Dernier message: 19/12/2007, 18h53
  2. Option pour voir les variable non utilisées ?
    Par lex13 dans le forum NetBeans
    Réponses: 13
    Dernier message: 25/08/2007, 13h57
  3. erreur variable non defini
    Par lilemy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 18h16
  4. Problème de variable non déclarée
    Par jncoffy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 24
    Dernier message: 06/06/2007, 12h01
  5. variable non déclarée?
    Par carole8 dans le forum C
    Réponses: 15
    Dernier message: 30/11/2006, 17h13

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