importer valeur userform2 sur userform1

yoyo77

XLDnaute Occasionnel
Bonjour à tous :),

Etant débutant ;) je me permet de venir vous demander un coup de main sur un projet qui me donne du file à retorde.

J'explique mon problème, j'ai un userform (1) avec dessus un bouton qui lance un autre userform (2).

L'userform (2) à des checkbox, textbox, combobox,

Ma question comment faire pour importer mes sélections de l'userform (2) dans un textbox de l'userform (1) ?

Exemple : En userform (2) je selectionne un checkbox (1) et je veux qui se reporte en userform (1) dans le textbox (11).

J'ai testé des macros trouvées sur le Web mais rien à faire.:(

Merci :cool::cool::cool:
 

Pièces jointes

  • test_ips_v1.xlsm
    49.6 KB · Affichages: 52
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : importer valeur userform2 sur userform1

Bonjour,

Je ne peux pas ouvrir ton fichier parce que pas sur la même version d'Excel.
Donc conseil à chaud:

Première étape, dans ton Userform 2, tout en haut du code (sans être dans une procédure ou quoi que ce soit), tu mets
Code:
    Public monParent as Userform1 'Userform1 est le type de ton Userform1

Tu crées ensuite une procédure publique dans le code de ton Userform2:
Code:
    Public sub Init(unParent as Userform1)
        Set monParent = unParent
    End sub
Ca va te permettre de toujours garder la référence de l'userform1 qui appelle ton Userform2

Dans le code de ton Userform1, 2 choses à rajouter.
Tout d'abord, quand tu appelles ton userform2, rajoutes ceci:
Code:
    Load Userform2 'ça, tu dois déjà avoir
    Userform2.Init(me) 'tu transfères la référence de l'objet parent
    Userform2.Show 'ça tu dois déjà avoir aussi

Et ensuite, une procédure publique pour récupérer les données en retour (je te conseille aussi de passer par une structure, mais pas obligatoire):
Code:
Public Sub Retour_Data(.........)
     'Tu réaffectes les informations de ton Userform1 en fonction de ce que tu passes ici en paramètres
End Sub

Dernier point, sur une procédure "Query_Close", "OnQuit", ou une procédure que tu définies toi-même, il ne te reste plus qu'à faire ceci:
Code:
    monParent.Retour_Data(......)

Si tu as des questions, n'hésite pas :)
Cordialement,
Orodreth
 

yoyo77

XLDnaute Occasionnel
Re : importer valeur userform2 sur userform1

Orodreth:),

j'ai pas tout compris, j'ai essayé et cela ne fonctionne pas :(

Je ne sais pas si je me suis bien exprimé :p

mon userform2 se lance bien via l'userform1 et cela fonctionne bien jusqu'ici :)

Ce que je veux, c'est arriver à ce que les valeurs cochées (Checkbox1,2,3,4....) dans l'userform2 se reporte dans le

Textbox11 de l'userform1

quel genre de macro puis-je mettre pour que cela fonctionne :confused: :D

Merci pour le coup de patte :cool::cool::cool:
 

Orodreth

XLDnaute Impliqué
Re : importer valeur userform2 sur userform1

Re,

Sans savoir précisément ce que tu veux remonter comme informations dans ton textbox, c'est un peu compliqué à gérer.

Éventuellement, si tu cherches à remonter les valeurs des checkbox (True/False), tu peux essayer un truc comme ça:
(conseil, place tes checkbox dans un groupbox ou un framebox)

Code:
Private Function Val_CHK as string
    Dim mesVal_ARenvoyer as string
    mesVal_ARenvoyer = vbnullstring

    mesVal_ARenvoyer = iif(checkbox1.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    mesVal_ARenvoyer = iif(checkbox2.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    mesVal_ARenvoyer = iif(checkbox3.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    mesVal_ARenvoyer = iif(checkbox4.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    mesVal_ARenvoyer = iif(checkbox5.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    mesVal_ARenvoyer = iif(checkbox6.value, mesVal_ARenvoyer & "1", mesVal_ARenvoyer & "0")
    ...
    Val_CHK = mesVal_ARenvoyer
End Function

Private Sub Userform2_QueryClose(Cancel as Boolean)
   ...
   monParent.Retour_Data(val_CHK) 'Renvoie dans l'userform1 une variable string qui contient les valeurs des checkbox sous format binaire, 0 = false, 1 = true
   ...
End Sub

'Tu peux aussi utiliser la fonction ci-dessous en remplacement de la première, si tu veux une version plus textuelle
Private Function Val_CHK_Explicit as string
    Dim mesVal_ARenvoyer as string
    mesVal_ARenvoyer = vbnullstring

    mesVal_ARenvoyer = iif(checkbox1.value, mesVal_ARenvoyer & "Checkbox1 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    mesVal_ARenvoyer = iif(checkbox2.value, mesVal_ARenvoyer & "Checkbox2 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    mesVal_ARenvoyer = iif(checkbox3.value, mesVal_ARenvoyer & "Checkbox3 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    mesVal_ARenvoyer = iif(checkbox4.value, mesVal_ARenvoyer & "Checkbox4 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    mesVal_ARenvoyer = iif(checkbox5.value, mesVal_ARenvoyer & "Checkbox5 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    mesVal_ARenvoyer = iif(checkbox6.value, mesVal_ARenvoyer & "Checkbox6 = True" & vbcrlf, mesVal_ARenvoyer & "Checkbox1 = False"  & vbcrlf)
    ...
    Val_CHK = mesVal_ARenvoyer
End Function

Et dans ton Retour_Data dans le code de l'Userform1:
Code:
Public sub Retour_Data(lesValeurs as string)
    textbox11.text = lesValeurs
 

yoyo77

XLDnaute Occasionnel
Re : importer valeur userform2 sur userform1

Re,

Pas évident je sais sans que tu puisse voir le fichier.

je vais essayer tes macros,

dit moi dans l'userform2 j'ai un bouton valider "CommandButton3"

que faut il mettre après :

Private Sub CommandButton3_Click()

Autre chose j'ai une erreur d'incompatibilité de type avec ce code :

Userform2.Init(me) 'tu transfères la référence de l'objet parent

Merci
 

yoyo77

XLDnaute Occasionnel
Re : importer valeur userform2 sur userform1

sinon c'est peut etre le calendrier Monthview qui bloque

c'est une dll à mettre dans system32 "mscomcl2" + aller chercher dans référence et ajouter dans outils supplémentaire.

Enfin je dis peut être !
 

yoyo77

XLDnaute Occasionnel
Re : importer valeur userform2 sur userform1

re,

Objet requis ? pourtant dans l'userform1 "N°" correspond à combobox 2 dans initialize et cela fonctionne bien chez moi,

cela est surement du à la version 93 vs 2007 !

mais tu peux accéder à visual basic ?
 

Orodreth

XLDnaute Impliqué
Re : importer valeur userform2 sur userform1

Re,

Ok, quand tu veux.

J'ai regardé en même temps. Bizarre qu'il ne veuille pas de la procédure Init (enfin, de l'objet "Me" passé en paramètre plutôt).

Bref .. Remplace la ligne
Code:
    UserForm2.Init(Me)
par
Code:
    Set UserForm2.monParent = Me

Ca fonctionne comme ça.
 

Discussions similaires