XL 2013 Réduire mon code

maval

XLDnaute Barbatruc
Bonjour

Voilà dans mon formulaire j'ai une centaine de label à positionner et dans mon code j'ai fait ceci:

Me.Label4.Left = 18
Me.Label4.Top = 234

Me.Label5.Left = 306
Me.Label5.Top = 234

Me.Label6.Left = 18
Me.Label6.Top = 270

Me.Label7.Left = 168
Me.Label7.Top = 270

Me.Label8.Left = 306
Me.Label8.Top = 270

Me.Label9.Left = 18
Me.Label9.Top = 306

Me.Label10.Left = 168
Me.Label10.Top = 306

Me.Label11.Left = 306
Me.Label11.Top = 306

Me.Label12.Left = 18
Me.Label12.Top = 342

Me.Label13.Left = 168
Me.Label13.Top = 342

Me.Label14.Left = 18
Me.Label14.Top = 378

Me.Label15.Left = 336
Me.Label15.Top = 378

Me.Label16.Left = 18
Me.Label16.Top = 414

Me.Label17.Left = 144
Me.Label17.Top = 414

Me.Label18.Left = 222
Me.Label18.Top = 414

ect...

Est-il possible de réduire

Je vous remercie
 

Dim.Reichart

XLDnaute Occasionnel
Bonjour,
Il y a parfois 2 label sur la meme ligne, parfois 3, pourquoi?

Personnellement, je pense que j'essayerais avec une boucle basée sur i=N° de label, qui calcule l'ecart gauche selon le modulo de i/3, et l'écart haut selon l'entier de i/3. Je ne sais pas si je suis très clair.
 

Dim.Reichart

XLDnaute Occasionnel
Et bien lorsque je regarde les coordonnées des label Left et Top, je vois bien qu'il y en a 2 sur la ligne .top=234, 3 sur la ligne .top=270, 3 sur la ligne .top=306, 2 sur la ligne .top=342 etc...

Je vois aussi que l'écart d'une ligne a l'autre est toujours de 36, et que l'ecart gauche est toujours 18, 168 et 306. Lorsqu'il n'y a que deux label sur la ligne, il semblerait que ce soit celui du milieu qui disparaisse.

Donc je peux dire que .left = index((18,168,306), modulo((N° label-1)/3))
et que .top = ent((N°label-1)/3)*36 + 198

Ca reste à traduire en formulation correcte VBA, mais l'idée est la.
 

job75

XLDnaute Barbatruc
Bonjour maval, Dim.Reichart, mapomme,
VB:
Dim L, T, i%
L = Array(18, 306, 18, 168, 306, 18, 168, 306, 18, 168, 18, 336, 18, 144, 2012)
T = Array(234, 234, 270, 270, 270, 306, 306, 306, 342, 342, 378, 378, 414, 414, 414)
For i = 4 To 18
    Me("Label" & i).Left = L(i - 4)
    Me("Label" & i).Top = T(i - 4)
Next
A+
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16