Lignes et colonnes en cm

Comment dimensionner les lignes et les 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 sub

Pour 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 sub

Sans 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 : ,

Mots clefs associés à cette page : , ,

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)))

Nouveau

1 Nouvelle page ajoutée ce mois-ci dont :

Mises à jour

3 pages modifiées ce mois-ci dont :