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 des variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut Portée des variables
    Bonjour à tous,

    J'aimerai savoir si il est possible de déclarer des variables qui ne disparaissent pas à la fin de l’exécution du projet.
    J'enregistre dans des variables le nom des feuilles que l'utilisateur crée tant que mon projet vba est en cours et j'aimerai pouvoir avoir le moyen de "sauvegarder" ces variables pour les réutiliser au moments ou l'utilisateur exécute de nouveau le projet vba.
    Encore mieux si c'est possible, pouvoir sauvegarder le nom de ces feuilles dans des variables et qui ne disparaitraient pas après fermeture puis réouverture du classeur.

    est-ce possible ? Sinon avant vous des idées à proposer rendraient possible la gestion des feuilles qui sont créés puis supprimées ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Sinon avant vous des idées à proposer rendraient possible la gestion des feuilles qui sont créés puis supprimées ?
    Il faut copier les feuilles dans un classeur historique avant de les supprimer. Maintenant, ça dépend de ce que tu veux faire exactement.

    Quant à la sauvegarde des variables, soit tu les copies sur une feuille, soit tu les mets dans un nom défini.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    Salut, merci pour ta réponse

    Au fait l'idée, c'était de détecter tel ou tel feuille ouverte ou manipuler par l'utilisateur pour pouvoir lors du lancement de la macro, travailler sur cette feuille. Par exemple si il l'utilisateur crée une nouvelle feuille, ferme le classeur en enregistrant, le ré-ouvre et exécute la macro.
    Effectivement écrire le nom de la feuille qu'il crée dans une case d'une autre feuille devrait marcher mais c'est néanmoins pas très esthétique, c'est pourquoi je suis ouvert à toute proposition.
    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La feuille peut être masquée, donc c'est neutre du point de vue de l'esthétique.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    Dans ThisWorkBook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        laValeur = Application.InputBox("Saississez une valeur quelconque", , , , , , , 1 + 2)
        ActiveWorkbook.Save
    End Sub
     
    Private Sub Workbook_Open()
        test
    End Sub
    Dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Property Get laValeur() As Variant
        laValeur = [Essai]
    End Property
     
    Public Property Let laValeur(ByVal maValeur As Variant)
        ThisWorkbook.Names.Add "Essai", maValeur, False
    End Property
     
    Sub test()
    On Error Resume Next
        MsgBox laValeur
    End Sub
    En ouvrant le classeur on récupère le valeur

    A adapter

    JP

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    Merci pour vos réponses,
    je n'avais pas pensé à cacher une feuille ou à ajouter des "noms" dans le classeur.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [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
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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