Distance entre deux labels

Zibix

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur ce forum cependant j'ai dejà utilise de nombreuses fois les topics pour m'aider lors de mon codage de certaines macro lorsque j'avais un petit "pepin".

Aujourd'hui j'ai un problème qui m'arrache les cheveux ... J'ai une macro qui crée des lables dynamiquement ( le bout de macro que j'ai d'ailleurs repris sur ce forum pour la création dynamique des labels). Mon problème est que l'on voit le texte du dernier label uniquement et non de tous les autres générés avant.

Voici le bout de macro qui gère cet option :

HF = UserForm1.Height 'définit la variable HF
TB = UserForm1.CommandButton1.Top

For x = i To 54
'redéfinit HB / redimensionne l'UserFOrm

HF = HF + 13: UserForm1.Height = HF
'redéfinit TB / repositionne les deux boutons
TB = TB + 13: UserForm1.CommandButton1.Top = TB: UserForm1.CommandButton2.Top = TB
'ajoute un Label
Set Control = UserForm1.Controls.Add("Forms.Label.1", "Label" & x, True)
Control.Top = TB - 100 'positionne le Label (hauteur)
Control.Left = 12 'positionne le Label (à gauche)
Control.Caption = "Niveau : " & Range("A" & i) & Chr(10) & Range("D" & i)
'Control.TextAlign = ContentAlignment.MiddleCenter
Control.AutoSize = True
'détermine le texte du Label
Next x

Merci à tous d'avance pour vos réponses.
 

Pièces jointes

  • Userform.JPG
    Userform.JPG
    20.7 KB · Affichages: 89
  • Userform.JPG
    Userform.JPG
    20.7 KB · Affichages: 88
  • Userform.JPG
    Userform.JPG
    20.7 KB · Affichages: 90

Papou-net

XLDnaute Barbatruc
Re : Distance entre deux labels

Bonjour Zibix, et bienvenue sur le Forum,

Tu trouveras ci-joint un fichier qui fonctionne. J'ai volontairement limité le nombre de labels à20, mais ça doit tout aussi bien fonctionner avec 54.

J'ai trouvé un problème dans ta boucle : tu écris For x = i To 54, mais i n'est pas initialisé.

J'ai donc corrigé ainsi (voir Module1) :

Code:
Sub AjoutLabels()
HF = UserForm1.Height 'définit la variable HF
TB = UserForm1.CommandButton1.Top
For x = [B][COLOR="Red"]1 [/COLOR][/B]To 20
'redéfinit HB / redimensionne l'UserFOrm

HF = HF + 13: UserForm1.Height = HF
'redéfinit TB / repositionne les deux boutons
TB = TB + 13: UserForm1.CommandButton1.Top = TB: UserForm1.CommandButton2.Top = TB
'ajoute un Label
Set Control = UserForm1.Controls.Add("Forms.Label.1", "Label" & x, True)
[COLOR="Blue"][B]Control.Height = 12[/B][/COLOR]
Control.Top = TB - 100 'positionne le Label (hauteur)
Control.Left = 12 'positionne le Label (à gauche)
Control.Caption = "Niveau : " & Range("A" & [COLOR="Red"][B]x[/B][/COLOR]) & Chr(10) & Range("D" & [COLOR="Red"][B]x[/B][/COLOR])
'Control.TextAlign = ContentAlignment.MiddleCenter
Control.AutoSize = True
'détermine le texte du Label
Next x
UserForm1.Show
End Sub

J'ai ajouté la ligne en bleu, pour éviter le chevauchement des contrôles car par défaut, les labels ont une hauteur de 18 points.

Espérant t'avoir aidé.

Cordialement.
 

Pièces jointes

  • Zibix1.xls
    23 KB · Affichages: 70

Zibix

XLDnaute Nouveau
Re : Distance entre deux labels

Merci de votre réponse très rapide j'ai changer pour des textbox ce qui se révélait plus pratique pour les infos que j'ai à traités j'ai un autre problème avec les événements crée dynamiquement pour ces checkbox et textbox que je crée.

J'ai recherché sur divers pdf pour crée ces évenements mais mon problème ne se résout pas il ne va jamais dans la sous classe nommée Classe 1 qui doit gérer ces évenements.

Voici le bout de la macro qui crée les checkbox et textobox :

HF = UserForm1.Height 'définit la variable HF
TB = UserForm1.CommandButton1.Top
Set Collect = New Collection
For x = i To 54
'redéfinit HB / redimensionne l'UserFOrm

HF = HF + 13: UserForm1.Height = HF
'redéfinit TB / repositionne les deux boutons
TB = TB + 13: UserForm1.CommandButton1.Top = TB: UserForm1.CommandButton2.Top = TB
'ajoute un Label
Set Control = UserForm1.Controls.Add("Forms.textbox.1", "Textbox" & x, True)
Control.Top = TB - 100 'positionne le Label (hauteur)
Control.Left = 12 'positionne le Label (à gauche)
Control.Text = "Niveau : " & Range("A" & i) & " " & Range("D" & i)
'Control.TextAlign = ContentAlignment.MiddleCenter
Control.AutoSize = True
Set Control1 = UserForm1.Controls.Add("Forms.checkbox.1", "CheckBox" & x, True)
Control1.Top = TB - 100
Control1.Left = 0
Control1.AutoSize = True
'détermine le texte du Label
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next x

Pour que cela soit plus clair je l'espère je vous ai fait une petite description de ce que je dois faire.


Mon travail consiste à générer plusieurs type de fichiers différents j’ai déjà un fichier temporaire que je génère.
Ce fichier se présente sous la forme Fichier Temporaire jour moi année.xls.
Ce fichier contient lui-même des informations de plusieurs autres fichiers.
Il faut que lorsque l’utilisateur clique sur une checkbox il recherche une plage de cellule dans le fichier temporaire correspondant au nom de la colonne H correspondant à la ligne de la checkbox.
Par exemple le fichier courant ou est la macro (qui n’est pas le fichier temporaire) présente à des informations utile qui commence à la ligne 53 Je copie les informations dans une textbox correspondant au colonne A et D. (cela est fait actuellement)
La colonne H contient un morceau nom du fichier à rechercher dans le fichier temporaire.
Le fichier temporaire est délimité en bleu avec les noms des fichiers traités.
Il faut que j’arrive à copier les cellules présentes entre les deux cellules de couleur bleu ce qui correspond au fichier donné.

Je vous ai mis en pièce jointe une captuire d'ecran pour montrer visuellement comment sont delimités les infos dans ce fichier temporaire.


Merci d'avance à tous le monde pour m'avoir lu.
 

Pièces jointes

  • Fichier Temp.JPG
    Fichier Temp.JPG
    47.2 KB · Affichages: 83

Statistiques des forums

Discussions
312 153
Messages
2 085 799
Membres
102 980
dernier inscrit
brossadan