Bonsoir,
Un petit bout de code que je pêche dans mes archives qui pourrait t'aider...
Sub LColMm()
Dim w!, c!
With ActiveCell
w = Application.CentimetersToPoints(.Value / 10)
If w > 1342.5 Or w < 0 Then
.Value = CVErr(xlErrNA)
Exit Sub
End If
If w > 9 Then
c = (w - 9) / 5.25 + 1
Else
c = w / 9
End If
.ColumnWidth = c
End With
End Sub
Celui-ci était conçu pour sélectionner une cellule, taper la largeur en mm souhaitée, et lancer la macro qui ajuste la largeur de la colonne.
Je ne m'y suis pas repenché pour améliorer la précision, mais de toute façon on n'obtiendra pas une exactitude absolue, car ce dimensionnement fonctionne par palier, si tu fais varier des largeurs à la 2e décimale tu verras que seules certaines valeurs sont prises en compte et les autres sont ramenées à l'une de ces valeurs la plus proche... (et l'unité de calcul n'étant pas le mm, on a peu de chance de tomber sur un nombre exact de mm).
Toutefois, si je convertis la largeur en points (prélevée par sa propriété Width) de la colonne ajustée à 60 mm par cette macro, j'obtiens 60,06 mm, ce qui me paraît une approche acceptable.
Tu peux en adapter le code dans une autre macro en remplaçant ActiveCell.Value par la valeur en mm qui t'intéresse, et supprimant le contrôle que cette valeur ne dépasse pas les limites maximale et minimale autorisées.
Cordialement.