Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…