Envoyé par
lucimast
Bonjour,
Je souhaiterais appeller un formulaire depuis un autre proprement
J'ai un formulaire Form1 avec un CommandButton1
et je veux appeller mon formulaire Form2 et un InputText2 à initialiser
Dois-je faire :
Private Sub Command1_Click()
Form2.Text1.Text = "40.0000"
Form2.Show
End Sub
ou bien
Private Sub Command1_Click()
Dim formx As New Form2
formx.Text2 = "40.000"
formx.Show
End Sub
Merci de votre aide.
Bonjour,
Les feuilles (form) sont des classes préinstanciées, il n'est donc pas nécessaire dans ce contexte
de créer une nouvelle instance dont l'intérêt serait d'isoler des données
ex avec 2 formulaires (form1, form2) de l'isolation des données avec 2 instances d'un même formulaire
Form1+2 CommandButton(Command1/Command2)
Form2+1 TextBox(Text1)
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
| Private frm0 As Form2
Private frm1 As Form2
Private Sub Command1_Click()
Me.Print frm0.Text1
End Sub
Private Sub Command2_Click()
Me.Print frm1.Text1
End Sub
Private Sub Form_Load()
Set frm0 = New Form2
Set frm1 = New Form2
frm1.Left = frm0.Left + frm0.Width
frm0.Text1 = "abc"
frm1.Text1 = "123"
frm0.Show
frm1.Show
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unload frm0
Unload frm1
End Sub |
Il existe une solution qui me semble plus 'esthétique' et fonctionnelle que celle envisagée
quand il s'agit de créer un outil personnalisé à partir d'un formulaire et qui consiste
- à appeler une fonction d'un formulaire et
- à gérer l'affichage depuis le formulaire lui-même sachant que Form_Load sera appelé après l'appel de la fonction permettant ainsi de gérer automatiquement toutes les mises en forme
ex
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Public Function Saisie(prompt As String) As String
Me.Text1.Text = prompt
Me.Show 1
Saisie = Me.Text1.Text
End Function
Private Sub Form_Load()
With Me.Text1
.Left = 100
.Top = 100
.Width = 5000
Me.Width = .Left + .Width + 1500
Me.Height = .Top + .Height + 1500
End With
'etc
End Sub |
l'appel se fera par exemple ainsi :
msgbox form2.Saisie("un texte")
Ceci dit, dans le cas présent un InputBox devrait suffire.
Partager