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 :

fonction, pouvez-vous m'expliquer ce 'à voulu faire le précédent developpeur?


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut fonction, pouvez-vous m'expliquer ce 'à voulu faire le précédent developpeur?
    Bonjour,

    J'ai repris un projet dans lequel j'ai trouvé cette fonction, si qq pouvait m'expliquer ce qu'a voulu faire le précédent dev, je lui en serais très reconnaissante

    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
     
    '============================================================================
    '
    '   SauveContexte
    '
    '   Procédure pour sauvegarder le contexte à l'entrée de la fonction
    '
    '============================================================================
    Static Function SauveContexte(ByVal Mode As Integer) As Integer
        ' Agumentation de l'indice
        If iContexte > 50 Then
            iContexte = 0
        Else
            iContexte = iContexte + 1
        End If
     
        ' sauvegarde des paramètres
        Context(iContexte).Mode = Mode
        If Mode And xlMiseAJourEcran Then Context(iContexte).ScreenUpdating = Application.ScreenUpdating
        If Mode And xlModeCalcul Then Context(iContexte).Calculation = Application.Calculation
     
        If Mode And xlBarreEtat Then
            Context(iContexte).StatusBar = Application.StatusBar
            Context(iContexte).DisplayStatusBar = Application.DisplayStatusBar
        End If
     
        SauveContexte = iContexte
    End Function
    merci

    Nath

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Nath,

    la function "SauveContexte" doit être appelez dans une macro de ce classeur,
    il doit y avoir une condition à remplir dans cette autre macro pour différentes action selon la valeur retourné par cette fonction.
    en recherchant les mots "SauveContexte" dans le projet en cours tu trouvera ou cette function est utilisée.

    elle remet la variable iContexte à 0 selon le cas
    elle modifie le mode calcul, le mode affichage, la valeur de la barre "StatusBar"
    et affiche le "StatusBar"

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    en fait c'est cela que je comprends pas trop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If iContexte > 50 Then
            iContexte = 0
        Else
            iContexte = iContexte + 1
        End If
     
        ' sauvegarde des paramètres
        Context(iContexte).Mode = Mode
    je vois comment cela fonctionne, mais je comprends pas pourquoi sauvegarder dans un tableau différent contexte...

    Enfin j'imagine que cela n'est pas très évident sans le restant du code de dire qq chose..

    Voilà comment sont déclarées ls variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Type SauvegardeContexte
        StatusBar As Variant
        DisplayStatusBar As Boolean
        ScreenUpdating As Integer
        Calculation As Variant
        Mode As Integer
    End Type
     
    Dim Context(50) As SauvegardeContexte
    Dim iContexte As Integer

  4. #4
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Nath,

    il doit y avoir dans ce projet un module de classe pour la classe SauvegardeContexte.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    non pas de module de classe....

    ma sje comprends pas pourquoi sauver plusieurs contexte...à quoi cela peut servir?

    Parce que je pense que c'est au cas ou l applic plante, pour ne pas perdre l'état de la feuille...mais l'applic n'est que dans un état à la fois....non?

  6. #6
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Nath,

    s'il n'y a pas de module de classe, il y aurait une erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Context(50) As SauvegardeContexte

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    sauvegardeContext est un type qui est déclaré plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Type SauvegardeContexte
        StatusBar As Variant
        DisplayStatusBar As Boolean
        ScreenUpdating As Integer
        Calculation As Variant
        Mode As Integer
    End Type
    pas besoin de module de classe pour cela, cela se fait bien dans la programmation procédurale...

  8. #8
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Nath,

    ok, mais dans quel macro est appelez la function SauveContexte
    il y a quelque part une boucle qui se répete 50 fois car tant que iContexte n'a pas atteind 50 la function SauveContexte est rappelée et donc il est vérifie l'état de l'Application pour :
    ScreenUpdating
    Calculation
    StatusBar
    DisplayStatusBar

Discussions similaires

  1. Pouvez vous m'expliquer?
    Par lassault1 dans le forum Débuter
    Réponses: 15
    Dernier message: 20/04/2010, 15h40
  2. pouvez vous m'expliquer cette requet?
    Par hayat2 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2009, 07h57
  3. Pouvez vous m'expliquer ce code ?
    Par sayfouche dans le forum C#
    Réponses: 6
    Dernier message: 09/04/2008, 23h36
  4. Réponses: 1
    Dernier message: 01/10/2007, 17h32
  5. Serveur ftp pouvez vous m'expliquer svp
    Par fred59 dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 07/12/2006, 18h37

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