Affichage d'une Form [Résolu]

Signaler
Messages postés
16
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
17 mars 2009
-
Messages postés
16
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
17 mars 2009
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
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


 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
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

 
Messages postés
16
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
17 mars 2009

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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
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

 
Messages postés
16
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
17 mars 2009

Bien pris note, merci PCPT.