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 une valeur variable à un UserForm depuis un Bouton d’une feuille [XL-365]


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
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut Passer une valeur variable à un UserForm depuis un Bouton d’une feuille
    Bonjour

    J’aimerais pouvoir passer une valeur variable à un UserForm depuis un Bouton d’une feuille
    La valeur de la variable sert à modifier quelques paramètres du User Form

    Concrètement, j’ai 3 boutons sur la feuil1 : "Demande", "Synthèse", "Résultat"
    Chaque bouton ouvre un UserForm qui est quasiment identique
    C’est justement parce que le UserForm est "quasiment" identique que j’aimerai initialiser le UserForm selon le bouton Cliqué depuis Feuil1 (cela évite d’avoir 3 UserForms). Dans le UserForm, je voudrais utiliser la variable pour réaliser des actions différentes (ex : afficher la plage "Demande" ou "Synthèse" ou "Résultat" dans une ListBox)

    Mon idée (mais qui ne fonctionne pas), passer par la Sub "UserForm_Initialize"

    Affecter aux boutons de la feuil1 la macro "module.ouvrirUserForm"
    La Sub contient (code simplifié):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vVariableSelonBoutonCliqué = "Demande" ou "Synthèse" ou "Résultat"
    MonUserForm.UserForm_Initialize vVariableSelonBoutonCliqué
    MonUserForm.Show
    Et dans le code du UserForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Initialize(vVariableSelonBoutonCliqué As String)
    Je ne sais pas si je suis sur la bonne piste

    Merci pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous utilisez trois boutons ActiveX, ce sont des objets totalement indépendant qui ont leurs propres propriétés et événements donc il suffit dans la procédure événementielle Click de chaque bouton d'invoquer le UserForm et lui passer un paramètre

    Soit dans la feuille où se trouve les boutons
    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
    Option Explicit
    Private Sub cmdDemande_Click()
      With UserForm1
      .MaVariable = 0
      .Show
      End With
    End Sub
    Private Sub cmdSynthese_Click()
      With UserForm1
      .MaVariable = 1
      .Show
      End With
    End Sub
    Private Sub cmdResult_Click()
      With UserForm1
      .MaVariable = 2
      .Show
      End With
    End Sub

    Le code du UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Public MaVariable As Byte
     
    Private Sub UserForm_Activate()
      Dim msg As Variant
      msg = Array("Demande", "Synthèse", "Résultat")
      Me.Caption = "Formulaire de " & msg(MaVariable)
    End Sub
    Mais il y a évidemment d'autres solutions
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut
    J'utilisais les Contrôles de Formulaire

    Les Contrôle ActiveX répondent parfaitement à mon besoin

    D'ailleurs l'utilisation des Contrôles ActiveX m'ouvre de nouvelles perpectives!

    Merci pour cette solution

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

Discussions similaires

  1. [OL-2010] Passer une valeur date à une variable
    Par sebinator dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 09/02/2013, 16h55
  2. affecter une valeur via un userform à une variable d'une procédure
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2012, 10h58
  3. Réponses: 2
    Dernier message: 07/03/2009, 19h13
  4. [POO] Passer une valeur de variable en variable
    Par hugo69 dans le forum Langage
    Réponses: 8
    Dernier message: 23/11/2006, 23h48
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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