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 :

Modifier le textbox d'un userform1 depuis un userform 2


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Par défaut Modifier le textbox d'un userform1 depuis un userform 2
    Bonjour 

    n'étant pas très caler en VBA je me suis retrouvé confronté a un soucis que je n'ai pas pu résoudre malgré mes recherche

    J'ai un userform (nommer "UserForm Appelé Partout" dans le fichier exemple), le fonctionnement est le suivant, lorsqu'il est appelé, il modifie la textbox du userform qui l'appelle, jusque la pas de problème vu que je peux directement utilisé le noms des attribut du userform appelant sous la forme "Userform1.textBox1 = Me.textbox.value"
    Ou ca se complique c'est qu'il doit pouvoir le faire pour tous les userform qui vont l'appeler, j'ai donc pensé à déclarer une variable en public qui a qui sera affecté la valeur récupéré, et ensuite utilisé pour affecté la valeur qui y est contenu sur la textbox du userform appelant,

    mais ca ne fonctionne qu'a moitié le code plante apres sans message d'excel permettant de situé d'ou peux venir le problème

    Voila le code utilisé

    Dans le Userform1 qui appelle

    fichier-exemple.xlsm
    Private Sub CommandButton1_Click()
    var = ""
    UserForm2.Show

    MsgBox "Valeur dans le form 1 : " & var
    TextBoxAChanger.Value = var
    End Sub
    

    Dans le Userform2 qui est appeler

    Private Sub CommandButton1_Click()
    var = TextBoxARecuperer.Value
    MsgBox "Valeur dans le form 2 : " & var

    Unload Me
    End Sub

    Et la variable var est déclaré dans un module a coté comme suit "Public var As String"
    
    PS : le contexte est le suivant, le userform2 qui est appelé permet de renvoyé la date sélectionner et mettre cette date dans la textbox du userform1 qui appelle afin que la date soit récupéré pour être utilisé et comme je le disait plus haut, ce userform de date est appelé sur différents userfomr d'où la nécessité de rendre son appel générique
    
    PPS : je met un fichier exemple
    Fichier Exemple.xlsm


    Merci d'avance pour votre aide
    
    Cdt
    Louis

    
    
    

  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 153
    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 153
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une bonne explication est largement suffisante pour comprendre ce que vous cherchez à obtenir, nul besoin de déposer un classeur à télécharger
    Pour alimenter des compléments d'un UserForm depuis un autre, rien de plus simple

    Pour l'exemple nous allons remplir le TextBox1 du UserForm1 avec la valeur encodée dans le TextBox1 du UserForm2

    J'ai mis le code dans la procédure événementielle CommandButton1_Click présente dans le UserForm2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
      UserForm1.TextBox1.Value = Me.TextBox1.Value
      Unload Me
    End Sub
    On pourrait également utiliser une ou des variables publiques dans le UserForm1 et les alimenter depuis le UserForm2

    [EDIT]
    Voici un classeur exemple
    Après avoir lancé le UserForm2 depuis le UserForm1, entrez une valeur dans le TextBox et fermer le formulaire
    Fichiers attachés Fichiers attachés
    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
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 567
    Par défaut
    Bonjour,
    Dans le userform1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
    UserForm2.Show vbmodal
    TextBoxAChanger.Value = UserForm2.TextBoxARecuperer.Value
    Msgbox TextBoxAChanger.Value
    Unload UserForm2
    End Sub
    Dans le Userform2 qui est appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub CommandButton1_Click()
    Me.hide
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Par défaut
    Bonjour

    Merci pour vos retour, mon problème ne situait pas sur la modification de l'useform1, mais sur le fait que l'userform est appelé sur différent userform de ce fait je voulais un code qui permettrait de modifier les textbox quelque soit le useform appelant.

    Mais Apres analyse plus approfondi de mon code, il s'avère qu'il fonctionne mais la textbox de mon UF1 (TextBoxAChanger ) a un comportement bizarre,
    il se réduit lorsqu'on y insère un texte ce qui me faisais penser qu'il y'avait un soucis sur le code (je ne sais toujours pas ce qui cause ce rétrécissement de la textbox lorsqu'on y met un texte).

    Merci

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 567
    Par défaut
    Bonjour,
    Vu que userform2 est ouvert en vbmodal,il peut être appelé de plusieurs userform. Il te suffis d'appeler le userform2 de la même manière que dans mon exemple du userform1.

    Pour TextBoxAChanger regarde sa propriété autosize qu'il faut mettre à False. Elle redimensinne le contrôle au nombre de caractères si true.

  6. #6
    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 153
    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 153
    Billets dans le blog
    53
    Par défaut
    Bonjour Thumb down, on peut parfaitement écrire dans un UserFormA depuis un UserFormB sans pour autant être en mode Modal
    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

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 567
    Par défaut
    Bonjour Philippe,
    Oui tu as raison et c'est pas ce que je voulais dire.

    Je ne voulais pas noyer notre ami sous une tonne d'explication sachant qu'il pourrait être utile d'expliquer pourquoi j'ai mis vbmodal.

    Le code que ja proposé au ne fonctionne pas si le userfom2 n'est pas modal c'est pour cela que je le force à l'ouverture et ainsi il est le seul accessible t'en qu'il es visible. Docmnc pas de risques de l'ouvrir simultanément de plusieurs userfoms.

    Je préfère laisser le formulaire appelant gérer l'ouverture,la récupération et la fermeture du userfoms2 ouvert en modal plutôt que de passer par un variables public qui risque de poser plus de problèmes que d'en résoudre.

  8. #8
    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 153
    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 153
    Billets dans le blog
    53
    Par défaut
    Bonjour Thumb
    Je ne voulais pas noyer notre ami sous une tonne d'explication sachant qu'il pourrait être utile d'expliquer pourquoi j'ai mis vbmodal.
    Un UserForm est modal par défaut, il n'y a donc pas de raison de le préciser. C'est en général l'inverse que l'on fait UserForm1.Show 0
    Je préfère laisser le formulaire appelant gérer l'ouverture,la récupération et la fermeture du userfoms2 ouvert en modal plutôt que de passer par un variables public qui risque de poser plus de problèmes que d'en résoudre.
    Je suis entièrement d'accord avec toi mais lorsque j'évoquais une variable publique, je ne parlais pas de variable publique "Projet" mais "UserForm", mais sans doute aurais-je dû être plus précis ("On pourrait également utiliser une ou des variables publiques dans le UserForm1")
    Une variable publique au niveau du UserForm permet d'alimenter celle-ci comme un complément du UserForm
    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

  9. #9
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 567
    Par défaut
    Je mets systématiquement vbmodal !

    Je comprends bien ce que tu veux dire mais pour moi c'est compliqué de répondre à deux personnes en même temps.

    Le demandeur palais d'une variable publique.
    var = TextBoxARecuperer.Value !

    Comme je pense qu'il n'a plus besoin de moi je vous laisse en tête à tête.

  10. #10
    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 153
    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 153
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme je pense qu'il n'a plus besoin de moi je vous laisse en tête à tête.
    Pas plus de moi, d'ailleurs
    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

Discussions similaires

  1. [Débutant] Modifier une TextBox depuis une class [erreur CS0038]
    Par Allan007 dans le forum C#
    Réponses: 4
    Dernier message: 27/05/2012, 10h23
  2. Modifier le format d'un champ depuis VBA
    Par Psikorene dans le forum VBA Access
    Réponses: 6
    Dernier message: 12/03/2007, 14h02
  3. Modifier couleur textbox
    Par oli_carbo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2007, 22h09
  4. Réponses: 3
    Dernier message: 05/06/2006, 21h14
  5. [C#]Modifier l'image dans une PictureBox depuis un flux http
    Par f.colo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/02/2006, 09h18

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