re
 je l'ai dis tout a l'heure  tu met  le 
moins a ce qui te convient dans le initialyse
Private Sub UserForm_Initialize()
    Qx = Val(Trim(Mid(Application.OperatingSystem, InStrRev(Application.OperatingSystem, " ") + 1)))
    moins = IIf(Qx = 6.01, 20, 
0)
    Qx = IIf(Qx = 6.01, (4 / 3), 1)
End Sub
 avec divers retours peut être qu'un jour je trouverais la logique 
😉😅
pour le moment on fait comme ça
[edit]
 j'ai trouvé une partie de la logique
en fait dans mon calcul je ne prends pas en compte le margin du
body
table
TR
[edit]
  le margin auto qui est appliqué quand pas de css  est de 4 points environ
 car la table n'est pas en bordercollapse
 avec 20 en dur comme j'avais mis  plus il y avait  de ligne moins c'etait bon
 donc la formule pour rectifier la hauteur est
4 fois le nombre de ligne(TR) = ce que l'on doit enlever  en hauteur
j'ai testé
avec -20 et beaucoup plus de ligne
Regarde la pièce jointe 1128914
avec la nouvelle formule et  le meme message
Regarde la pièce jointe 1128916
pour vous c'est le rouge  à changer
Private Sub UserForm_Initialize()
    Qx = Val(Trim(Mid(Application.OperatingSystem, InStrRev(Application.OperatingSystem, " ") + 1)))
    moins = IIf(Qx = 6.01, 4, 
0)' remplacez le zero par (1 à 4)
    Qx = IIf(Qx = 6.01, (4 / 3), 
1)'on est bon comme ça chez vous et chez moi
End Sub
la multiplication je la fait dans la création
nouveau fichier joint