Salut Hervé,
C'est un peu un classique sur les PictureBoxs, avec un cadre 3D...
Tu calcules la taille utile de ta PictureBox et non la taille affichée.
Donc, VB va te rejouter les 6 pixels du cadre, en hauteur et en largeur.
Il faut donc que tu retires la largeur du cadre pour éviter ce décalage haut et droite.
'Ici tu as un coéficient de correction globale, donc tu prends en compte le bord du cadre LegendHisto.Width = Screen.TwipsPerPixelX * LegendHisto.TextWidth(Htext) * 1.25 ' Moins le cadre LegendHisto.Height = (Screen.TwipsPerPixelY * LegendHisto.TextHeight(Htext) * BarsNum)-Screen.TwipsPerPixelY *6
Oubien, passer en PictureBox sans cadre 3D, qui n'affiche que la plage affichable de ton contrôle.
Amuse-toi bien.
Merci pour ta réponse mais ça ne fonctionne pas
LegendHisto.Height = (Screen.TwipsPerPixelY * LegendHisto.TextHeight(Htext) * BarsNum)-Screen.TwipsPerPixelY *6
Screen.TwipsPerPixelY = 15 LegendHisto.TextHeight(Htext) = 0,9727443 BarsNum = 6
Screen.TwipsPerPixelY * LegendHisto.TextHeight(Htext) * BarsNum = 87,547 Screen.TwipsPerPixelY * 6 = 90
LegendHisto.Height = 87,547 - 90 < 0 ⇒ Run time error 380 (invalid property value)
et si je ne multiplie pas 6 par Screen.TwipsPerPixelY la dernière ligne de texte de la légende est rognée
En retirant 3 au lieu de 6 c'est bon mais ça me semble être un peu au hasard.