Lignes et colonnes en cm
Pour une raison qui n'appartient qu'à Microsoft, la largeur et la hauteur des lignes dans excel est exprimée dans une unité qui ne fait vraiment pas partie du Système International de mesures (SI). La largeur par défaut d'une colonne est en effet de 8.43 caractères standard (ça ne s'invente pas !!).
Extrait de l'aide de MSDN : Excel part de 8 caractères définis par la police standard du classeur et traduit cela dans un nombre de pixels. La taille du pixel (qui dépend de la résolution de l'écran) est stockée en interne par excel de façon à positionner les données à l'écran. Quand on ajuste la hauteur ou la largeur de colonne, excel fait la conversion inverse c'est à dire qu'il convertit le nombre de pixels en caractères standards. Une largeur de colonne de 8.43 signifie que 8.43 caractères tiennent dans la colonne. Si la police standard est une police non proportionnelle comme courrier (tous les caractères ont la même largeur), 8 caractères entiers tiennent dans la colonne. Si c'est une police proportionnelle comme Arial, vous pouvez mettre plus de i que de w dans la colonne. Les caractères considérés dans ce cas sont les chiffres (0,1, 2 3...), qui sont en général tous de la même largeur.
Bon avec tout ça, vous ne savez pas comment imposer à excel de faire des colonnes de 4 cm.
Avec les versions antérieures à 2007, il n'y a pas moyen de faire autre chose que de passer par VBA (ce qui fonctionne d'ailleurs aussi avec les versions 2007 et suivantes).
Pour toutes les versions, par VBA
Pour les colonnes
sub colonnesEnCentimetres()
Dim cm As Integer, points As Integer, savewidth As Integer
Dim count As Integer
Application.ScreenUpdating = False
cm = Application.InputBox("entrer la largeur de la colonne en cms", "Largeur de la colonne souhaitée", Type:=1)
If cm = False Then exit sub
points = Application.CentimetersToPoints(cm)
savewidth = ActiveCell.ColumnWidth
ActiveCell.ColumnWidth = 255
If points > ActiveCell.Width Then
MsgBox "la largeur de" & cm & "est trop large" & Chr(10) & _
"la valeur maxi est de " & _
Format(ActiveCell.Width / 28.3464566929134, _
"0.00"), vbOKOnly + vbExclamation, "largeur non valable"
ActiveCell.ColumnWidth = savewidth
exit sub
End If
lowerwidth = 0
upwidth = 255
ActiveCell.ColumnWidth = 127.5
curwidth = ActiveCell.ColumnWidth
count = 0
While (ActiveCell.Width <> points) And (count < 20)
If ActiveCell.Width < points Then
lowerwidth = curwidth
Selection.ColumnWidth = (curwidth + upwidth) / 2
Else
upwidth = curwidth
Selection.ColumnWidth = (curwidth + lowerwidth) / 2
End If
curwidth = ActiveCell.ColumnWidth
count = cou
nt + 1
Wend
end subPour les lignes
C'est nettement plus court car lignes et colonnes n'ont pas, au départ, les mêmes unités de mesure
sub lignesEnCentimetres()
Dim cm As Integer
cm = Application.InputBox("entrer la hauteur de la ligne en centimetres", "Hauteur de la ligne souhaitée", Type:=1)
If cm Then
Selection.RowHeight = Application.CentimetersToPoints(cm)
End If
end subSans VBA pour les versions 2007 et suivantes
Depuis la version 2007, il y a enfin moyen de faire cela sans macro, même si on ne peut pas tout faire :
Dans l'onglet affichage, sélectionnez l'affichage de type mise en page. La règle vous permet de redimensionner vos colonnes (et même chose pour les lignes) presque à votre guise. Presque car vous ne pouvez pas afficher des fractions de pixels. Donc vous ne pourrez pas forcément afficher exactement 3.2 cm par exemple (suivant la résolution de votre écran). Mais enfin, c'est déjà un pas vers une solution plus intuitive.

Et pour imprimer ?
Je voudrais imprimer un carré de 10 cm sur 10 cm. Avec l'une des solutions ci-dessus, j'ajuste à 10cmx10cm la taille de la cellule A1 mais quand j'imprime cette page, ça ne fait jamais un carré de 10cm. Comment faire ?
La correspondance entre les dimensions à l'écran et celles à l'impression varient... suivant l'imprimante !
Pas d'autre solution que de procéder par tatonnements et malheureusement, ceci sera à refaire si vous changez d'imprimante.
Auteurs : Flo Cabon, Jean-Paul Sabatier
Mots clefs associés à cette page : cm, colonne, ligne
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

largeur et hauteur en mesure métrique
Bonsoir Flo,
;o)))
il existait dans un classeur GdAnniverDisciplus
une proc pour faire des cellules carrées en mm
Sub FaireCarreEnmm()
Dim WPChar As Double
Dim DInch As Double
Dim Temp As String
Dim lig As Object, col As Object
Dim i As Integer
Temp = InputBox("Hauteur,largeur en mm?")
'------conversion en pouce
DInch = Val(Temp) / 25.4
If DInch > 0 And DInch < 5 Then
i = 0
For Each col In ActiveWindow.RangeSelection.Columns
i = i + 1
If i = 1 Then
col.EntireColumn.AutoFit
'--- on récupere ici la largeur par caractère
'--- en divisant la largeur pixel par la largeur standard en caractères
WPChar = col.Width / col.ColumnWidth
End If
'--- on ajuste la largeur à la dimension demandée (exprimée en caractères)
col.ColumnWidth = ((DInch * 72) / WPChar)
Next col
'---on fait de meme pour les hauteurs (exprimées en pixels)
For Each lig In ActiveWindow.RangeSelection.Rows
lig.RowHeight = (DInch * 72)
Next lig
End If
End Sub
--
HTH
;o)))
Et pour imprimer ???
Re-Bonsoir Flo
posté sur MPFE 11 aout 2006
chaque marque et modéle d'imprimante introduit un ratio vertical et horizontal
(parfois different),
il conviendra donc également d'étalonner la ou les imprimantes en imprimant une
zone dont on connait les dimensions EXCEL
et calculer ensuite un coef de correction
une approche perso :
il faut dessiner un objet carré de dimensions quelconques :
par exemple 270 pixels ))
ActiveSheet.Shapes.AddShape(msoShapeRectangle, PosX, PosY, Largeur,Hauteur)
l'imprimer,
mesurer sur le papier les dimensions hauteur et largeur
et memoriser les ratios obtenus KH (Korrrrrrection Horizontale) et KV (Korrrrrrection Verticale)
KH= largeur en pixels / largeur lue sur papier en mm
KV= hauteur en pixels / hauteur lue sur papier en mm
macro à modifier en fonction des mesures lues
Sub Macro1()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 20, 20, 270, 270).Select
' ------en appliquant les coefficients trouvé sur mon ESPSON STYLUS COLOR
' ------mesure lue : largeur 98mm, Hauteur 94mm
KH = 270 / 98
KV = 270 / 94
' -------pour obtenir un carré de 100mm x 100mm
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 40, 60, 100 * KH, 100 *KV).Select
'-------pour obtenir un rectangle de 120mm x 60mm
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 60, 100, 120 * KH, 60 *KV).Select
End Sub
--
HTH
;o)))