Par contre je ne comprends pas comment tu peux aller aussi près des limites de la feuille, surtout à droite et en bas où je pensais que l'impression ne pouvait pas aller.
c'est ce que j'ai tenté de t'expliquer plusieur fois depuis un moment visiblement maladroitement
c'est ta méthode qui n'est pas bonne
pas bonne dans le sens ou tu :
1° tu rapproche la plage a la shape donc déjà là on a un soucis de ratio (à moins que par hasard l'userform est un ratio 1.414 (29.7 / 21)
donc a l'impression excel va imprimer un ratio x dans un ration 29.7 * 21 donc forcement tu reduit la possibilité de démarger
2° ton calcul en do loop c'est bien mais tu n'es pas au bord de la shape 'sauf coincidence que le calcul rowsheight et columnwidth tombe juste
ma methode
1° conversion 29.7 et 21 en point
2° on mémo les coeff
coeff du width = (width / columnwidth)
coeff du height (height/rowheight)
(je précise il sont d'origine la feuille vient d'être crée c'est donc une base solide )
3°le width et le height on switch selon l'userform plus grand que large ou l'inverse
4°maintenant que l'on a le width et height
combien de colonnes et lignes faut il pour faire cette dimension
nombre de col= Int(le width /[A1.]Width)
nombre de ligne = Int(le height /[A1].Height)
(
on arrive a ce que la dernière colonne dépasse un peu)
et maintenant que l'on a le width , height , nombre de ligne , nombre de colonne
5° et bien on peu calculer quasi exactement le rowheight et coloumnwidth sans boucle c'est ça qui est beau
puisque je l'applique a toute les colonne et lignes en même temps après
' Calcul des tailles optimales par cellule
cw = (le width / nombre de colonne ) / coeff Width
rh = (ke height / nombre de ligne) / coeff height
on applique
maplage.columnwidth=cw
maplage.rowheight=rh
et voila on a notre plage au ratio A4
SEULE PETIT PROBLÈME si excel accepte mon 29.7 en hauteur il me plante une marge forcée (le salo!!!)
c'est pas grave l'astuce a patosh que tu va découvrir quand ce sera publié
ensuite pagesetup marge et header a zero et tout le tout tim
et SURTOUT !!! le zoom à false pas 100 ou plus ou moins je dis bien false
et enfin les deux Fit to
ben il ne reste plus qu'a placer la shape en top et left 0 agrandir ou reduire hauteur ou largeur pour que ça rentre sans déformation
pour cela on a le lockaspectratio qui gère hein
resultat c'est propre net
allez on crop l'image et on fait sauter les bordures et barre de titre et c'est troujours propre et net
allez on tente avec un grand
ma conclusion:
je pense que nous avons découvert quelques petites astuces dans ce sujet vu le carcan de ces marges
mais comme ça fait le laron tu t'es empressé d'adopter une logique qui n'est certes pas si mauvaise(je l'avais adopté en premier) mais aussi pas la bonne car dans la logique la shape rentre dans la page et non la page dans la shape
voila les démos que tu viens de voir ont été faite avec la version publiée
pour info tu l'aura remarqué
je fait péter les bordures et barre de titre
(je m'attaque a l'image pas a l'userform( je fait un crop))
ca ne t'aura pas échapper aussi que les barre de titre son classique car je n'utilise pas bitblt qui coupe si userform dedorde des bords de l'ecran ou est caché par une autre fenêtre j'utilise l'api printwindow qui va chercher dans le hdc les bitouilles pas les pixoulou
voila tu vois j'ai préféré tout explorer avant de publier quelque chose qui n'est pas tout a fait au point
allez pour le plaisir je vais mettre une bordure a la plage
avec le cadre rouge on vois bien que la plage est border line
allez on s'amuse encore un peu
on va le faire a 90% et oui comme j'ai shunté le zoom je fait le mien (argument percentpage de la fonction )
a j'oubliais la demo avec userform a moitié sorti de l'écran
voila pas se presser explorer toute les solutions permet de faire les choses bien
😉