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 :

[VBA Excel] Conserver une donnée d'une macro à une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Par défaut [VBA Excel] Conserver une donnée d'une macro à une autre
    Bonjour à tous,

    J'ai besoin de votre science éclairée chers forumeurs.
    Je souhaite conserver une donnée (type string) que je génère d'une macro type Private Sub (elle est ds "thisWorkBook") pour l'utiliser dans une macro plus simple (Module).

    Savez-vous comment conserver ma donnée ?
    Je ne souhaite pas utiliser la solution de créer une nouvelle feuille (même cacher) et y insérer les données q je veux conserver.

    Y'a t il alors une autre solution ?

    Merci d'avance pr votre aide !!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    tu as essayé de la déclarer en publique?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public variable as variant

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par Mourne
    Je souhaite conserver une donnée (type string)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public variable As String
    A écrire dans un module standard (pas le code d'une feuille).
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut
    Bonjour,

    Providence ou pas, j'avais justement une question similaire, je profite donc de ce topic.

    Dans un module de classe standard, je déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public utilisateur As string
    Dans le but de n'entrer qu'une fois le nom de l'utilisateur qui servira à maintes reprises dans les autres modules, userforms et ThisWorkbook.
    Suivant le poste sur lequel je travaille, le nom d'utilisateur change (bureau, école, domicile)
    D'où l'intérêt de ne changer qu'une seule fois le nom d'utilisateur et de ne pas parcourir tout le code pour remplacer.

    Si j'entre ceci, j'ai une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public utilisateur As String
    utilisateur = "chewi"
    Vous me répondrez certainement "logique!"

    Dois-je déclarer dans chaque sub "utilisateur =" ?
    Car je ne désire forcément pas donner une valeur dans chaque sub, sinon je perds l'utilité du "public".

    Pouvez-vous me dire comment ne changer qu'une seule fois la valeur ?
    Et donc n'entrer qu'une seule fois "utilisateur = chewi" ou " =moi" ou ...

    PS Mourne: regarde ce tuto très utile:
    http://silkyroad.developpez.com/VBA/LesVariables/#LV

    Merci à vous

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    On vient de le dire, non ?

    Bon, Chewi, je t'en voulais parce que tu as volé la question de Mourne mais bon, ça pourra lui servir.
    Tu as deux solutions selon ce que tu veux faire.
    1 - Ou tu souhaites que les mauvais utilisateurs ne puissent pas lancer les macros de ton appli, toutes les macros...
    2 - Ou tu souhaites ne les priver que de certaines macros.

    1 - Tu détectes le User dans Workbook_Open, détection que tu places dans Thisworkbook. Si ce n'est pas le bon, tu mets Exit sub après ton test.

    2 - Tu déclares un boolean en Public dans le module standard
    .....Public UserOk as boolean
    Tu détectes ensuite le User au même endroit que précédemment
    .....UserOk = LeUser est le bon
    Et tu conditionnes l'exécution de chaque macro par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If not UserOk then exit sub

  6. #6
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut
    Désolé Ouskel'nord, je dois avoir du mal à m'exprimer je pense

    En fait, il n'y a pas de "mauvais utilisateur"

    Mais j'utilise mon code sur plusieurs postes, je modifie mon code, je le reprend, je l'utilise sur un autre poste et ainsi de suite et vu que je ne sais pas encore détecter automatiquement l'utilisateur en cours, lorsque j'utilise des chemins (C:\Doc and Settings\Chewi), je dois modifier chewi en paul sur un poste puis en J-luc sur un autre et ainsi de suite.

    Donc, pour que mon code puisse fonctionner, je dois modifier le chemin et mettre l'utilisateur courant à la place de chewi.

    Et plutôt que de modifier 42 fois, je souhaite utiliser "public" puis modifier 1 seule fois le nom de l'utilisateur.

    D'où ma question où puis-je dire "utilisateur=chewi"?
    Car tel quel en dessous de public utilisateur as string, j'ai une erreur.

    Bon, Chewi, je t'en voulais parce que tu as volé la question de Mourne mais bon, ça pourra lui servir.
    Je pensais bien faire en ne créant pas un 2ème topic identique

    B à T,

    Chewi

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu le mets ou Utilisateur = "Chewi" ? Tu dois le placer dans une sub...
    Pour avoir le nom du User, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilisateur = Environ("USERNAME")
    Pour passer en revue le nom des utilisateurs et traiter le chemin, tu peux en créer un tableau à deux dimensions incluant les deux...
    Juste une idée

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/07/2015, 11h55
  2. Réponses: 1
    Dernier message: 22/04/2014, 16h32
  3. vba excel translation des données d'une feuille à l'autre
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/09/2010, 15h31
  4. Réponses: 8
    Dernier message: 16/07/2008, 09h08
  5. [VBA E] Conserver le derniere valeur selectionné d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 18/06/2006, 10h28

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