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 :

Passer un parametre a un userform [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    rien
    Inscrit en
    Juin 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Juin 2015
    Messages : 46
    Points : 24
    Points
    24
    Par défaut Passer un parametre a un userform
    Bonjour,

    Je souhaite utilisé des userform dans kes macro que je fais. Mais a chaque fois je me trouve face a un problème. Comment faire pour envoyer des variables a mon userform ?
    J'ai fait des recherches sur le net. Je suis tombé sur une solution. mettre la variable que l'on veux envoyer en PUBLIC. J'ai toujours entendu dire qu'il fallait au maximum eviter l'utilisation des variables global.
    Du coup je me dit qu'il dois bien y avoir un moyen propre de faire ça non ?

    Je vais donner des exemples pour faciliter le dialogue.

    J'ai une macro dans un fichier excel qui s'appelle FichierMacro. Dans cette macro j'ouvre un autre fichier excel.
    Je fait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub test()
    dim WbTravail as workbook
    Set WbTravail = Workbooks.Open(path)
    end sub
    maintenant je souhaite afficher un userform qui me propose de sélectionner un des onglets de ce nouveau workbook.
    Je souhaite utiliser une listbox avec les noms de tout les onglets du workbook. l’utilisateur en sélectionne un et je le récupère.
    Pour ça il faudrait que je puisse envoyer la variable WbTravail au userfom pour en recuperer la liste des onglets.
    Grace a ça je pourrais lors de la fonction d'initialisation du userform initialiser la listbox
    Mais voila comment faire ?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    non tu pourrait tout aussi bien remplir ta liste du userform dans la meme macro
    exemple

    apres workbooks.open......

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    userform1.show 0
    for each sh in activeworkbook.worksheets
    userform1.listebox1.additem sh.name
    next
    et pour garder le nom du classeur en memoire
    tu peut faire
    userform1.listebox1.tag=activeworkbook.name

    ainsi si tu te ballade entre les deux classeurs
    au click de la liste tu peut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbook(listebox1.tag).sheets(listebox1.value).activate
    comme tu peut le voir
    pas de variable
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre à l'essai
    Homme Profil pro
    rien
    Inscrit en
    Juin 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Juin 2015
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Ta méthode fonctionne en effet, c'est génial.

    Je pensais que Listbox1 était privé et donc accessible uniquement depuis l' interrieur du Userform. Je trouve ça bizarre que ca ne le sois pas d’ailleurs puisque toute les fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub UserForm_Click()
     
    End Sub
    sont automatiquement déclarer en privé.
    Du coup j'ai pas trop bien compris a quoi on peux avoir accès ou pas dans cette histoire ^^.

    ensuite la ligne ci dessous sert a passer le userform en mode non modal. Si j'ai bien compris ça permet de ne pas bloquer l’exécution du programme et donc de passer sur les lignes suivante pour remplir la listbox
    Mais du coup Le programme dois bien ce mettre en pause a un moment pour attendre les résultats non ?

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

Discussions similaires

  1. [JSP] passer en parametre valeur d un bouton radio
    Par logica dans le forum Servlets/JSP
    Réponses: 19
    Dernier message: 13/05/2005, 14h09
  2. [VB] Passer plusieurs parametres à une procedure stockée
    Par wolflinger dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2005, 14h13
  3. [script SQL]comment passer des parametres a un scrip sql?
    Par la7su dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 10h55
  4. passer deux parametre a une page
    Par unix27 dans le forum ASP
    Réponses: 3
    Dernier message: 30/09/2004, 18h14
  5. [C#] Comment passer un paramètre Boolean au service Web ?
    Par ramalho dans le forum Services Web
    Réponses: 3
    Dernier message: 07/06/2004, 17h31

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