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

Macros et VBA Excel Discussion :

portée de variable [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut portée de variable
    Bonjour,

    voici le code de ma macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Public valGlb As Integer
     
    Sub Main()
     
    MsgBox (valGlb)
    valGlb = valGlb + 1
     
    '...
    '...
     
    End Sub
    => Lorsque je relance ma macro, valGlb est bien incrémenté


    Ensuite pour arreter mon programme a un endroit donné, j'utilise la commande "End" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Option Explicit
    Public valGlb As Integer
     
    Sub Main()
     
    MsgBox (valGlb)
    valGlb = valGlb + 1
    End 'arret du programme
     
    '...
    '...
     
    End Sub
    => Le problème est qu'a chaque fois que je relance ma macro, la variable valGlb est réinitialisée

    Comment faire pour arrêter mon programme sans que ma variable soit réinitialisé si je relance ma macro ?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    un "Exit Sub" sortira de la procédure sans réinitialiser les variables

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut
    Exit arrêtera mon programme même si je suis dans une procédure appelée par une autre procédure ?

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    non il faut répercurter la sortie en cascade

    avec par exemple un retour de fonction égal à True si on doit sortir :
    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
     
    Function f1() As Boolean
    [Mon traitement...]
    If f2 Then
        f1 = True
        Exit Function
    End If
    [Mon traitement...]
    End Function
     
    Function f2() As Boolean
    [Mon traitement...]
    If True Then
        f2 = True
        Exit Function
    End If
    [Mon traitement...]
    End Function
    ou alors avec une gestion d'erreurs :
    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
    Sub f1()
    On Error GoTo Gestion_Erreurs
    f2
    Exit Sub
    Gestion_Erreurs:
    If Err.Number = vbObjectError Then
        MsgBox "Arrêt dans " & Err.Source
    Else
        MsgBox "Autre erreur:" & Err.Number & ", " & Err.Description
    End If
    End Sub
     
    Sub f2()
    f3
    If MaConditionDeSortie Then
        Err.Raise vbObjectError, "f2"
    End If
    End Sub
     
    Sub f3()
    If MaConditionDeSortie Then
        Err.Raise vbObjectError, "f3"
    End If
    End Sub
    s'il n'y pas de gestion d'erreurs locale dans chaque procédure, la levée d'une erreur renvoit l'exécution vers l'appelant qui possède une gestion d'erreurs

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut
    ok, merci pour les informations

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

Discussions similaires

  1. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  2. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

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