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 :

Envoyer une variable a un userform


Sujet :

Macros et VBA Excel

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

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Juin 2015
    Messages : 46
    Par défaut Envoyer une variable a un userform
    Bonjour,

    Je souhaiterais savoir comment envoyer une variable dans un userfom.

    Dans ma macro j'ai 2 variables. WsData et WsClient. Ce sont des variables worksheet.
    Dans mon userform j'ai 2 bouton. Un qui me permet d'afficher une des feuilles. l'autre bouton affiche l'autre feuille.
    Mais voila comment je peux faire en sorte d'envoyer WsDAta et WsClient dans ce userform ? En évitant l'utilisation des variables global.
    Il doit bien y avoir une façon de faire ça non ? Les gens qui ont conçu les userform ce sont bien dit que ça devrait être utile quand même ?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut heu....
    heu bonjour
    c'est tres simple
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with userform1
    .show 0
    .tag=WSDATA & ":" & WSCLIENT
    end with
    et dans le click de chaque bouton
    'pour le 1 er

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(split(me.tag,":")(0)).activate
    pour le 2 em
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(split(me.tag,":")(1)).activate
    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 averti
    Homme Profil pro
    rien
    Inscrit en
    Juin 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Juin 2015
    Messages : 46
    Par défaut
    Je ne connais pas tag mais je vais me renseigné la dessus.
    Par contre il semblerais que tu utilise WSDATA et WSCLIENT comme étant les nom des feuilles. C'est pas vraiment le cas puisqu'il s'agit de variable de type worksheets. WSDATA représante un objet et non pas un string. Du coup je suis pas sur que ça marche toujours ta solution

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    re
    si Wsdata est une variable elle injecte sa valeur et non son nom

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    le sheets actif s'appeile "toto" et l'autre s'appelle "grosminet"
    dim Wsdata as string ,Wsclient as string 
    Wsdata =activesheet.name
    Wsclient=sheets("grosminet").name 
    with userform1
    .show 0
    .tag=Wsdata &":" & Wsclient
    end with
    dans le tag tu aura "toto:grosminet"

    tu peut aussi si les noms ne change pas les mettres en dur
    ou bien encore si c'est bien leur noms dans les parenthezes (voir capture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .tag=sheets("toto").name & ":" & sheets("grosminet").name
    ou meme encore utiliser les object sheets par leur noms de base ( ils faut qu'il correspondent )
    en l'occurence ici tu aura "toto:grosminet"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .tag=Feuil1.name & ":" & Feuil3.name
    voir capture
    Nom : Capture.JPG
Affichages : 777
Taille : 108,0 Ko
    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

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une autre piste. Deux variables déclarées Public en tête du module de l'UserForm de cette façon (ici, avec le code attaché à chaque bouton pour l'activation des feuilles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public WsData As Worksheet
    Public WsClient As Worksheet
     
    Private Sub CommandButton1_Click()
        WsData.Activate
    End Sub
     
    Private Sub CommandButton2_Click()
        WsClient.Activate
    End Sub
    Les variables sont considérées comme des propriétés il faut donc utiliser le point.
    Pour le test, dans un module standard, affectation des variables puis affichage de l'UserForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Test()
     
        Set UserForm1.WsData = Worksheets("Feuil1")
        Set UserForm1.WsClient = Worksheets("Feuil2")
        UserForm1.Show
     
    End Sub

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Thomas_C_Moi Voir le message
    ...
    Dans ma macro j'ai 2 variables. WsData et WsClient. Ce sont des variables worksheet.
    Dans mon userform j'ai 2 bouton. Un qui me permet d'afficher une des feuilles. l'autre bouton affiche l'autre feuille.
    Mais voila comment je peux faire en sorte d'envoyer WsDAta et WsClient dans ce userform ?....
    Bonjour,

    tu n'as qu'as utilisé le principe donné par These ... tu définit tu en haut du code de ton userform une variable de type worksheet ...


    ensuite sur action sur l'un ou l'autre des deux boutons tu réaffecte cet objet sh ..

    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
     
    Option explicit
    Dim sh as workSheet 
    '(...)
     
    Sub cbWsData_Clic
        set sh =  WSData
        majAffichage
    end sub
     
    Sub cbWsClient_Clic
        set sh =  WsClient
        maJAffichage
    end sub
     
    '
    ' Procédure mise à jour affichage 
    '
    Sub majAffichage
    if sh is Nothing then exit sub ' évite erreur si feuille non sélectionnée
       TextBox1.value = sh.range("A2") ' par exemple affichage d'une cellule
       TextBox2.value = sh.Name ' par exemple affichage de la feuille sélectionnée
     
    end sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je pense que j'ai rien compris, mais en dépit, tu peut utiliser ça!

    Code Ajoute ce code dans ton UserForm! : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private WsData As Worksheet, WsClienta As Worksheet
    Public Sub Charger(wsd As Worksheet, Wsc As Worksheet)
    Set WsData = wsd
    Set WsClienta = Wsc
    Me.Show
    End Sub
    et tu l’exécute comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
       UserForm1.Charger ActiveWorkbook.Sheets(1), ActiveWorkbook.Sheets(2)
    End Sub

  8. #8
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Juin 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Juin 2015
    Messages : 46
    Par défaut
    Je vous remercie tous pour vos réponse. j'ai de quoi faire

    patricktoulon ta solution du tag pourrais marcher mais il ce trouve que les 2 feuille ne sont pas dans le même workbook.
    Donc envoyé juste le nom de la feuille ne suffis pas
    Envoyé de nom du workbook associé a la feuille commence a être un peux compliqué quand même.
    Mais je te remercie de m'avoir fait découvrir cette méthode qui me servira surement autre part.

    rdurupt Si j'ai bien compris ce que tu fais, il s'agit d'une sorte de fonction GET / SET utilisé dans la programmation orienté objet.
    C'est aussi intéressant. Je note

    Theze ta solution me plait beaucoup. c'est assez simple à utiliser

    Y a plus qu'a

    Merci

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

Discussions similaires

  1. [Forum] Envoyer une variable quand on clique sur un lien
    Par Eisy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 34
    Dernier message: 17/03/2006, 12h05
  2. [Applet] Comment envoyer une variable php au java?
    Par abstractor77 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 09/03/2006, 10h18
  3. Envoyer une variable (VARG) à un fichier PERL
    Par Tizard dans le forum Langage
    Réponses: 1
    Dernier message: 20/02/2006, 00h55
  4. envoyer une variable(un tableau) via un lien href
    Par sebduduf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 11/11/2005, 16h52
  5. Envoyer une variable dans un état
    Par uskiki85 dans le forum Access
    Réponses: 5
    Dernier message: 13/10/2005, 21h44

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