Creation dynamique d'un userform

Résolu/Fermé
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - Modifié par GermPeru le 7/02/2017 à 15:21
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 7 févr. 2017 à 21:25
Bonjour Forum,

Ma problematique actuelle est la creation d'un USF de maniere dynamique, cad que je voudrais lors de l´initialisation de mon USF qu'il charge directement des données de la premiere feuille de mon classeur dans des label.caption, le soucis est qu'il me manque certaines données pour la compréhension et donc pour la conception de mon USF. J´ai donc plein de questions:

Tout d'abord pour définir mes controles, quelle est la différence entre ces différentes expressions:
Dim LblBox1 As MSFORMS.Label
Dim LblBox2 As Control.Label
Dim LblBox3 As Label


Est ce qu'il y a une forme plus "correcte" qu' une autre ou sont elles equivalente?

A ce que j'ai compris il faut créer un module de classe; contenant les événements associé a mes label; pourquoi et quel est la difference entre un module de classe et un module "classique" (sans mauvais jeux de mots).

Public WithEvents label As MSForms.label


Le code que je suis en train de developper est:


Dim i As Integer
Dim Obj As Control

    For i = 2 To 4   'boucle pour la création des Label
      Set Obj = Me.Controls.Add("forms.Label.1")
      With Obj
          .Name = "TextBox" & i
          .Caption = Sheets(2).Range("J" & i)
          .Left = 12
          .Top = 30 * i + 10
          .Width = 50
          .Height = 20
      End With
next i


Ce qui ne fonctionne absolument pas.

Je suis prenneur de tout indice et information pouvant m´aider, un grand merci d'avance.
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
7 févr. 2017 à 17:06
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
7 févr. 2017 à 17:26
Bonjour et merci pour le lien,

Je lávais deja consulté et il permet de créer l´USF et le code le composant au travers d´une fonction.

Pour ma part j´ai deja l'USF, je souhaiterais créer les label et textbox de maniere dynamique; pensez vous que je dois suivre une demarche similaire, cad au travers d' une fonction. Une fonction pour chaque objet de different type que je souhaite créer?

Beacoup de nouvelles notions et je ne sais pas vraiment par ou commencer

Merci de votre aide
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 7/02/2017 à 17:45
Il faut changer le titre car il ne reflète pas ta demande:
Creer des controles dynamiques

Voir ceci pour ta demande

https://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform


@+ Le Pivert
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
7 févr. 2017 à 17:52
Dans le sens dynamique, j´entends, que mes objets (lbl et txtbox) se créent et se chargent a l´initialisation de mon USF en fonction de mes données dans une des feuilles de mon classeur; selon toi ceci n´est pas dynamique?

Je suis prenneur de tout type d´information et si tu me suggére un autre titre plus adéquate et qui te parrait plus spécifique a ma demande, n´hésite pas!

Merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
7 févr. 2017 à 18:13
Pour moi le titre serait:

Créer des contrôles dynamiques

Voici un exemple de création de contrôles dynamiques. L'exemple est fait avec des Checkbox, tu peux facilement remplacer par des TextBox et Label c'est la même procédure..
Tu as toute la marche à suivre, consulte la:

https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A

@+
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
Modifié par GermPeru le 7/02/2017 à 18:57
Merci du temps que tu m'accordes,

J´ai deja essayé, mais j´ai un message d´erreur sur la ligne de cl as classe1, comme si ce n´était pas défini, d´ou ma question de départ sur le module de classe


Private Sub UserForm_Initialize()

Dim NbLignes As Long
 Sheets(2).Range("A2").Select
 NbLignes = Range("A2", Selection.End(xlDown)).Cells.Count

Dim Obj As Control
Dim Cl As Classe1
Dim i As Integer

Set Collect = New Collection

For i = 2 To NbLignes 'boucle pour la création des Lbl
    Set Obj = Me.Controls.Add("forms.Label.1")
    With Obj
        .Name = "Label" & i
        .Object.Caption = sheets(2).Range("J" & i)
        .Left = 12
        .Top = 24 * i + 4
        .Width = 114
        .Height = 18
    End With
    
    'ajout de l'objet dans la classe
    Set Cl = New Classe1
    Set Cl.label = Obj
    Collect.Add Cl
Next i

End Sub


Je souhaiterai que cela soit a línitialisation de mon USF peut etre que ce nést pas possible de cette facon? Ou alors il faut que je change le code dans mon module de classe?

Option Explicit

Public WithEvents Label As MSForms.Label


Si tu en sais plus, je te remercie d´avance des informations.

PS: concernant le titre je suis d´accord avec toi mais il me semble que je ne peux pas le modifier.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
Modifié par cs_Le Pivert le 7/02/2017 à 19:20
 .Object.Caption = Sheets(2).Range("A" & i)


c'est la colonne A où sont les données!!!!!!!!!
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
7 févr. 2017 à 19:31
Pour ma part les données sont en colone J de la feuille 2, c´est juste pour le caption de la labelbox, si járrivais deja a afficher mes lbl box je serais deja content!!

Et le programme bug au niveau de
Dim Cl As Classe1


M´informant que la classe n´est pas défini par l´utilisateur.

Merci
0