[RESOLU] Creation de labelbox dans un formulaire en fonction du nb de cellule remplie

Crisky

XLDnaute Junior
Bonjour à tous

Pour etre plus clair,
j'ai un formulaire vierge que je voudrais enrichir via une macro

Supposons que sur une feuille j'ai des cellules aleatoirement remplie de A1-> A10
J'aimerais en cliquant sur un bouton pouvoir ouvrir un formulaire dans lequel apparaissent les valeurs des cellules qui ne sont pas vides dans des labelbox alignés verticalement

En piece jointe vous verrez ce que j'ai fait.

A la facon dont j'ai créé le code j'ai un objet labelbox qui va etre redefini a chaque passage de boucle et non pas créé, mais je ne sais pas comment faire pour creer un nouvel objet labelbox sans devoir tout decrire pour chaque cas

Merci d'avance pour votre aide
 

Pièces jointes

  • labelbox.xls
    32 KB · Affichages: 47
Dernière édition:
G

Guest

Guest
Re : Creation de labelbox dans un formulaire en fonction du nombre de cellule remplie

Bonjour,

Pas sûr d'avoir tout compris mais il me semble que sortir simplement .UserForm1.show de la boucle convient parfaitement.
Code:
    Dim newTxtBox As MSForms.Label
    y = 1
    For i = 1 To 10
        If Not Cells(1, i) = Empty Then
            Set newlabel = UserForm1.Controls.Add("Forms.label.1", , True)
            With newlabel
                .Top = y * 10
                .Caption = Cells(1, i).Value
            End With
            y = y + 1
        End If
    Next i
    UserForm1.Show 'Mettre ici lorsque tous les labels sont créés
 

Crisky

XLDnaute Junior
Re : Creation de labelbox dans un formulaire en fonction du nombre de cellule remplie

Du coup j'ai une question pour confirmer mon idée

Set newlabel = UserForm1.Controls.Add("Forms.label.1", , True)
Cela veut dire que j'attribue à la variable objet newlabel , le nouvel objet créé dont le libellé de cette objet s'est créé seul car j'ai mis les virgules à suivre ?
 
G

Guest

Guest
Re : Creation de labelbox dans un formulaire en fonction du nombre de cellule remplie

Re,

Forms.label.1 est un type d'objet (ou pour être plus exact une Classe d'objet)
NewLabel est une variable objet qui pointe vers le nouvel objet de type "Forms.label.1"
Pour changer son nom: NewLabel.Name="LeNouveauNom"
Quant au 'Libellé' il correspond à la propriété 'Caption'

Je ne comprends pas l'histoire des virgules dont tu parles.

A+
 

Crisky

XLDnaute Junior
Re : Creation de labelbox dans un formulaire en fonction du nombre de cellule remplie

Set newlabel = UserForm1.Controls.Add("Forms.label.1", ,True)

J'ai changé mon code en mettant à cet endroit "LABEL"&i
Ainsi ca me créé directement le nom de l'objet avec le numero de boucle LABEL3....

Ce qui me permet d'identifier plus tard des labels que je voudrais eventuellement modifier

Encore merci

Sinon pourquoi le fait de ne pas mettre le show au bon endroit ne faisait pas tout afficher ?
Car ca reste quand même le même formulaire du debut à la fin de la macro
 
G

Guest

Guest
Re : Creation de labelbox dans un formulaire en fonction du nombre de cellule remplie

Re,

Avec UserForm1.Show vbModeless cela aurait fonctionné. Voir l'aide excel sur la méthode .Show et son paramètre 'Modal'

Ou la propriété ShowModal des userforms.

TROUVER un tutoriel ou un bon bouquin pour démarrer.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia