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

VBA Discussion :

[VBA] Lancer une form à partir de son nom [Trucs & Astuces]


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut [VBA] Lancer une form à partir de son nom
    Bonjour

    Bon, ça doit pas être bien sorcier mais pourtant j'y arrive pas. Pas de blabla, un code d'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Nom de la form
    Dim form_name as string
     
    form_name=frm_ma_form
     
    'Et là ça marche pas (pas étonnant d'ailleurs)
    form_name.Show
    Voila, simplement je voudrai lancer une form à partir de son nom (dans mon programme, j'ai un tableau d'attributs et chaque attribut correspond à une form dont le nom est stocké sous forme de string (tableau de structures) si vous voulez tout savoir ) et je ne sais pas comment procéder.

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    essaye de mettre un attribut spécifique à l'ouverture d'une form , essaye avec plusieurs nom , execute , et je te parriré que ta form selectionné s'ouvre , mais seulememt à l'EXECUTION du programme , il faut que tu fasse une mise à jour PERMANENTE de ta variable
    form_name

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    il faut que tu fasse un parcourt des forms de tonprojet en regardant si le nom est bien form_name.

    ça doit ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim formquejecherche as form
    for each formquejecherche in monprojet
       if formquejecherche=form_name then formquejecherche.show
    next

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim frm as UserForm
    For Each frm In VBA.UserForms
        If frm = Tattrib(SearchAtt("Canal")).form Then
            frm.Show
        End If
    Next
    J'ai déjà essayé mais impossible de comparer un objet form et un string Le problème c'est que je trouve pas de propriété 'Name'.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par truman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim frm as UserForm
    For Each frm In VBA.UserForms
        If frm = Tattrib(SearchAtt("Canal")).form Then
            frm.Show
        End If
    Next
    J'ai déjà essayé mais impossible de comparer un objet form et un string Le problème c'est que je trouve pas de propriété 'Name'.
    déjà revoir ton titre ... ? VBA ou VB6 ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Citation Envoyé par bbil
    déjà revoir ton titre ... ? VBA ou VB6 ?
    Désolé

  7. #7
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Forms("Ma forme").Show
    A tester. Je ne sais plus si la collection Forms contient les forms non chargées.

    Edité : Remplacement de la collection Controls par Forms.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Citation Envoyé par Catbull
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Forms("Ma forme").Show
    A tester. Je ne sais plus si la collection Forms contient les forms non chargées.

    Edité : Remplacement de la collection Controls par Forms.
    Salut.

    Alors Controls il me dit objet invalide. Mais je suis en train d'essayer de le trifouiller parce que ça doit être un truc du genre. Forms c'est pas reconnu C'est une procédure VB6 ? Je suis en VBA.

  9. #9
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    En VBA, il faut utiliser la collection UserForms. Mais je viens de tester et cela ne fonctionne pas. Apparament seules les feuilles chargées sont présentes dans la collection. Je n'ai pas l'aide VBA sur mon poste, je ne peux pas vérifier cette hypothèse.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Ne marche pas non plus.

    J'ai trouvé ce morceau de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub REMPLISSAGE(ByVal argmt As Integer, ByVal numero As Integer)
    Dim userformname As String
     
    'AFFICHAGE DES DONNEES
    userformname = "client_p" & numero
    'AJOUT DES AUTRES DONNEES
    With VBA.UserForms.Add(userformname)
        .TextBox1.Text = Cells(argmt, 3)
        .TextBox2.Text = Cells(argmt, 4)
        .TextBox6.Text = Cells(argmt, 5)
        .TextBox3.Text = Cells(argmt, 6)
        .TextBox4.Text = Cells(argmt, 10)
        .TextBox5.Text = Cells(argmt, 11)
    End With
    End Sub
    Ca ajoute une nouvelle feuille du nom spécifié. Le problème c'est que je n'arrive pas à trouver une méthode pour trouver une feuille déjà existante sachant que la propriété Name n'existe pas.

Discussions similaires

  1. Réponses: 19
    Dernier message: 02/02/2009, 18h06
  2. Créer une Form à partir de son nom
    Par Delphi-ne dans le forum Delphi
    Réponses: 11
    Dernier message: 11/12/2006, 17h39
  3. Récupérer une variable à partir de son nom ...
    Par CynO dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2005, 16h59
  4. [VBA] Executer une fonction en passant son nom en argument
    Par David Guyon dans le forum Access
    Réponses: 4
    Dernier message: 05/10/2005, 19h56
  5. [Winform][C#]Comment lancer une forme à partir du menu
    Par rb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/06/2005, 17h01

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