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 :

Userform pilotant un autre Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Userform pilotant un autre Userform
    Bonjour tous,

    J'ai recherché et pas trouvé de solution.
    J'ai deux classeur ouvert chacun contenant un Userform. Admettons :
    Classeur 1 contient Userform1
    Classeur 2 contient Userform2

    Je voudrais que les données que je mets dans les TextBox de Userform1 soit reportées dans les TextBox de Userform2.
    du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Userform2.Textbox1.Value = Userform1.Textbox1.Value
    Mais ça ne marche pas (objet requis)... Comment faire?
    Merci d'avance,
    Marc

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Il ne trouve pas le 2ème UserForm parce qu'il le cherche dans le même classeur si tu ne précise rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("NomClasseur.xls").Userform2.Textbox1.Value = Userform1.Textbox1.Value

  3. #3
    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
    Comment appelles-tu Usf2 et comment décharges-tu Usf1 ?
    Pour aller dans usf2, tu dois mettre "Usf1.hide" et non pas "unload Usf1"
    Enfin, ta ligne de code doit se trouver dans Usf2

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    Merci de vos réponses

    fring : j'avais déjà essayé mais ça marchait pas

    ousk : ok, je vois le truc, je vais essayer!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    Je une vraiment une tanche avec les Userforms... Voilà mon code dans le Classeur 2 (qui se lance quand je clique sur un bouton de l'Usf1):

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Workbook_Open()
     
    ' Associe le classeur de recherche au nom RECH
    Dim RECH As Workbook
    Set RECH = ActiveWorkbook
    RECH.Sheets("CR").Activate
     
        ' Mémorise le chemin du fichier
        Dim ProjectPath$
        ProjectPath = ActiveWorkbook.Path
     
    ' Lance le Userform
     
    RECH.Sheets("Résultats").Activate
    INDEX.Show False
    UserForm1.Hide
    ' Report des données
            INDEX.Mot.Value = UserForm1.MotT.Value
     
        If UserForm1.MotEx.Value = True Then
            INDEX.MotEx.Value = True
        End If
     
        If UserForm1.Casse.Value = True Then
            INDEX.Casse.Value = True
        End If
     
        If UserForm1.Casse2.Value = True Then
            INDEX.Casse2.Value = True
        End If
     
        If UserForm1.BtEx.Value = True Then
            INDEX.BtEx.Value = True
            INDEX.Mot2.Value = UserForm1.Mot2.Value
        End If
     
     
    End Sub
    à UserForm1.Hide, il me dit "objet requis"
    si je mais pas la ligen même erreur à INDEX.Mot.Value = UserForm1.MotT.Value
    en gros il reconnait pas mon Usf1 si le l'évoque dans le Classeur2?

    PS : INDEX est le nom de mon Usf2

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par ML0808 Voir le message
    Merci de vos réponses

    fring : j'avais déjà essayé mais ça marchait pas
    Oui tu as raison, sorry j'avais balancé le code sans tester, c'est pourtant bien là qu'est l'os...il ne trouve pas l'objet requis puisqu'il est dans un autre classeur

  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
    A moins que INDEX.Show ouvre Userform1, si Userform1 n'est pas chargé, et donc tu ne peux pas lire ce qu'il y a dedans. Tu dois d'abord l'ouvrir, le renseigner et, une fois renseigné, le masquer avec Hide, puis, dans Userform2 chargé, alors seulement tu peux lire ce qu'il y a dans Userform1.
    Tu dis ce que fait INDEX.Show ?

    A+

    Edit
    Je viens de relire ta question : Tu ne peux pas ainsi lire depuis l'userform d'un classeur ce qu'il y a dans l'userform d'un autre classeur : Tu dois passer par une variable.
    Je regarde plus précisément

  8. #8
    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
    Les idées qui me viennent (pour lire dans l'usf d'un autre classeur)
    J'essaierais en créant une instance du ficher2, celui contenant userform1 (pas INDEX)
    Avec Application.run, tu pourras ouvrir userform1.
    Comme je n'ai jamais fait ça, j'ignore si une instance d'userform1 arrangerait les choses. Par contre, en passant par une variable déclarée dans le classeur2...
    J'en suis là. Après il faut rester...
    Bon courage.
    Comme la question est intéressante, je regarde de mon côté.
    A+

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

Discussions similaires

  1. [XL-2003] Données d'un UserForm dans un autre USerForm
    Par Nospam54 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/05/2015, 09h47
  2. Réponses: 10
    Dernier message: 15/05/2015, 10h03
  3. Déclenchement d'un USERFORM dans un autre USERFORM
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 27/02/2014, 13h51
  4. Réponses: 3
    Dernier message: 31/01/2013, 21h17
  5. [XL-2007] Activer bouton userform depuis un autre userform
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/10/2012, 21h45

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