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

VB 6 et antérieur Discussion :

Creation d'objet a la volée


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut Creation d'objet a la volée
    Citation Envoyé par gars_toff
    dim toto as new label

    set toto = object.add("LABEL",toto)

    En vb
    Salut, j'ai exactement besoins de faire la meme chose, donc j'ai essayé d'utiliser ce code là, mais ca marche pas. Il me dit que je fait une utilisation incorecte du mot-clé new. C'est peut-etre parceque je travail en vba?

  2. #2
    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
    Je ne suis pas sur que cela soit possible d'ajouter dynamiquement des controles sur une form :

    Citation Envoyé par msdn
    Visual Basic fournit la classe Control comme type de variable générique pour les contrôles. Lorsque vous déclarez une variable As Control, vous pouvez l'affecter comme référence à n'importe quel contrôle. Vous ne pouvez pas créer une instance de la classe Control
    Tu peux cependant passer par un groupe de controles.

    Si tu travailles en vba, tu peux passer par la collection OLEObjects. Dans ce cas il est tout à fait possible d'ajouter dynamiquement des controles sur une feuille Excel (Sur un UserForm?)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Catbull
    Si tu travailles en vba, tu peux passer par la collection OLEObjects. Dans ce cas il est tout à fait possible d'ajouter dynamiquement des controles sur une feuille Excel (Sur un UserForm?)
    Ok je vais essayer avec OLEObjects d'ajouter un objet de type label sur ma UserForm.

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Voici comment je crée mes Contrôles en VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim oNewControl As Control
     
    Set oNewControl = frmMyForm.Controls.Add("Forms.Label.1")
    oNewControl.Name = "lbl1"
    oNewControl.Caption = "Caption1"
    Set oNewControl = frmMyForm.Controls.Add("Forms.Label.1")
    oNewControl.Name = "lbl2"
    oNewControl.Caption = "Caption2"
     
    Etc...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut
    Ok, merci beaucoup j'ai finalement utilisé la méthode d'AlainTech et c'est top.

  6. #6
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par Catbull
    Je ne suis pas sur que cela soit possible d'ajouter dynamiquement des controles sur une form :
    Pour ton info, le seul controle classique que l'on ait pas reussi à créer dynamiquement (qque soit la méthode utilisée, en VB6) c'est un sous-menu dans un menu - lui aussi créé dynamiquement

    Au passage, si qqun a la combine ....

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut
    bon je suis de nouveau bloqué car j'arrive plus a retrouver mes textbox, je m'explique:

    dans un premier temps, lors de la l'activation de ma UserForm, je cré dynamique mes TextBox comme cela (selon les conseils d'AlainTech):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each mycell In Worksheets("Sheets1").Range("A1:A15")
         Set oNewControl2 = UserForm1.Controls.Add("Forms.TextBox.1")
         oNewControl2.Name = mycell.Value
         'Plus la positions x, y etc
    next mycell
    Ensuite, sur ma userfrom1 je dispose aussi d'un bouton ok et j'aimerais, lorsque je clique sur ok, utiliser les valeurs de mes différents textbox. Malheureusement je ne sais pas comment retrouvé mes textbox, si quelqu'un pouvait m'éclairer ce serait vraiment cool car la je rame a fond

  8. #8
    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 wind_vinch
    bon je suis de nouveau bloqué car j'arrive plus a retrouver mes textbox, je m'explique:

    Ensuite, sur ma userfrom1 je dispose aussi d'un bouton ok et j'aimerais, lorsque je clique sur ok, utiliser les valeurs de mes différents textbox. Malheureusement je ne sais pas comment retrouvé mes textbox, si quelqu'un pouvait m'éclairer ce serait vraiment cool car la je rame a fond
    tiens une solution en stockant les références à tes contôles dans un tableau ....
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub CommandButton1_Click()
     Dim c
     Dim i As Integer
     i = 1
     For i = 0 To UBound(oNewControl2) - 1
     
       Worksheets("Sheets1").Cells(i + 1, 2).Value = oNewControl2(i).Value
     
     Next
     Me.Hide
     
    End Sub
     
     
    Private Sub UserForm_Initialize()
    Dim iTop As Integer
    Dim i As Integer
    ReDim Preserve oNewControl2(Worksheets("Sheets1").Range("A1:A3").Cells.Count)
    For Each mycell In Worksheets("Sheets1").Range("A1:A3")
     
         Set oNewControl2(i) = UserForm1.Controls.Add("Forms.TextBox.1")
         oNewControl2(i).Text = mycell.Value
           oNewControl2(i).Top = iTop
         iTop = iTop + 20
         i = i + 1
         'Plus la positions x, y etc
     Next mycell
    End Sub



    Sinon il y as peu être une autre solution que je n'ai pas développé c'est sur validation, parcourir tous les contrôles de l'userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     for each c in userform1.controls
          SI c.name = xxx* ...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut
    ok, c'est tout bon en bidouillant un peu j'y suis arrivé (meme si le code n'est pas parfait ) merci a tous.

Discussions similaires

  1. probleme de creation d'objet cristal report
    Par sam_12_3 dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 03/04/2006, 13h58
  2. creation d'objet de classe a partir de string
    Par mencaglia dans le forum C++
    Réponses: 1
    Dernier message: 14/03/2006, 09h56
  3. [debutant] Creation d'objet au fur et a mesure
    Par jamesleouf dans le forum Débuter
    Réponses: 8
    Dernier message: 14/03/2006, 00h06
  4. Creation de variable a la volée ...
    Par SubZero2 dans le forum Langage
    Réponses: 10
    Dernier message: 15/09/2005, 14h36
  5. Lancer des shell unix pour creation d'objet ORACLE
    Par sygale dans le forum Administration
    Réponses: 6
    Dernier message: 27/10/2004, 18h03

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