Affichage d'une Form

Résolu
MarieNoob Messages postés 16 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 17 mars 2009 - 1 déc. 2007 à 15:56
MarieNoob Messages postés 16 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 17 mars 2009 - 1 déc. 2007 à 18:31
Bonjour à tout le monde, veuillez excuser mon niveau très débutant ! J'espère ne pas être trop ridicule sur ce forum.

Voici mon problème:

J'ai plusieurs form dans mon project, nommé toutes de la même manière avec "F_" en début du nom :
F_FORM1
F_FORM2
F_FORM3
etc

Dans une autre Form (F_MENU) j'ai une Listbox nommé LIST_PROG avec plusieurs choix dans la liste nommé de manière identique que mes form (FORM1, FORM2, FORM3, etc)

Donc je souhaiterai que quand on double click sur un choix de ma liste la form associé s'affiche.
Si je double clique sur le choix de ma liste FORM2 c'est la form F_FORM2 qui doit s'afficher.

Voici mon bout de code :
Private Sub List_Prog_DblClick()
Dim Lance_Prog As Control
xxx = List_Prog.Text
Lance_Prog = "F_" & xxx
Lance_Prog.Show
End Sub

Mais ce code me fait un message d'erreur : Object variable or With block variable not set.

Merci pour votre aide, sincèrement
Marie

6 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 déc. 2007 à 18:19
salut,

ta demande n'est pas réalisable, ce n'est pas du php !!

même callbyname attend un objet, autrement dit quelquechose qui apparaitrait dans le menu intellisense.
et comme ta "variable" n'y apparaitra jamais, tu ne pourras pas

exemple :

dim machin as string
machin="f_form2"

dim F as object
set F=new ....
après le NEW, le menu n'affichera pas MACHIN, donc c'est cuit

le mieux que tu puisses faire est un tableau au form_load, avec le nom de tes forms

Option Explicit
Dim aMyForms(1 To 4) As Form
Private Sub Form_Load()
    Set aMyForms(1) = F_Form1
    Set aMyForms(2) = F_Form2
    Set aMyForms(3) = F_Form3
    Set aMyForms(4) = F_Form4
    
    Dim i As Integer
    For i = LBound(aMyForms) To UBound(aMyForms)
        LIST_PROG.AddItem "F_Form" & i
    Next i
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim Frm As Form
    For Each Frm In Forms
        Unload Frm
    Next Frm
    Set Frm = Nothing
    
    Erase aMyForms
End Sub

Private Sub List_Prog_DblClick()
    Dim i As Integer
    For i = LBound(aMyForms) To UBound(aMyForms)
        If LIST_PROG.Text = aMyForms(i).Name Then
Exit For
    Next i
    aMyForms(i).Show
End Sub

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 16:12
Salut,

Si ton contrôle List est une listbox, voici

Private Sub List1_DblClick()



Dim MyItems As String
    MyItems = List1.Text
   
    Select Case MyItems
   
    Case "Form1"
         F_Form1.Show
   
    Case "Form2"
         F_Form2.Show
   
    Case "Form3"
         F_Form3.Show
   
    End Select
   
End Sub







A+
Exploreur

 Linux a un noyau, Windows un pépin


 
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 16:14
Re,

Ou comme cela aussi :

Private Sub List1_DblClick()
      
    If List1.Text = "Form1" Then F_Form1.Show
    If List1.Text = "Form2" Then F_Form2.Show
    If List1.Text = "Form3" Then F_Form3.Show
   
End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
MarieNoob Messages postés 16 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 17 mars 2009
1 déc. 2007 à 16:46
Salut Exploreur,

Pour ton premier code je ne connaissait pas, pour le deuxième j'en avait bien connaissance.

Le problème c'est que ma liste de choix dans ma listbox va encore avoir beaucoup de choix par la suite avec autant de nouvelle userform créer.
Ces deux codes m'obligent systématiquement à re_modifier mon bout de code Private Sub List1_DblClick().
N'y a t'il donc pas de solution pour prendre en compte "ma_concaténation.Show" ?

En tout cas merci !

Marie

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 17:29
Ben, va falloir que je cherche un peu plus aussi, car en faite, j'étais entrain de faire un essai avec une boucle For...Each...mais le souçi, c'est qu'il faut que les forms soient visible, pour pouvoir faire la comparaison de list1.text avec le nom de la form pour pouvoir ainsi l'afficher....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
MarieNoob Messages postés 16 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 17 mars 2009
1 déc. 2007 à 18:31
Bien pris note, merci PCPT.
Rejoignez-nous