VBA – Largeur des colonnes et hauteur des lignes en cm

Publié le 25 octobre 2018
par Cathy Monier
largeur colonne vba

Pour préparer vos feuilles Excel selon une trame en centimètres, vous pouvez utiliser l’affichage Mise en Page. Celui-ci permet d’indiquer en centimètres la hauteur des lignes et la largeur des colonnes en centimètres. Par contre, comment le faire en code VBA ?

 

Hauteur des lignes en centimètres

Rien de plus simple de convertir la hauteur des lignes qui s’attribue en point. En effet, il existe une fonction CentimetersToPoints qui convertit un nombre de centimètres en Point, il existe également la fonction InchesToPoints qui convertit des pouces.

Sub LignesEnCentimetres()
Dim Cm As Variant
      'Utilisation de la méthode InputBox d'Excel afin de forcer la saisie d'un nombre (Type:=1)
       Cm = Application.InputBox("Entrer la hauteur de la ligne en centimetres", "Hauteur de la ligne souhaitée", Type:=1)
       ' si l'utilisateur clique sur le bouton Annuler Cm sera égale à False
       ' la propriété Height renvoie la hauteur de la ligne mais est en lecture seule
       ' Il est donc obligatoire d'utiliser RowHeight qui renvoit également la hauteur mais permet aussi de lui attribuer une hauteur
       If Cm <> False Then Selection.RowHeight = Application.CentimetersToPoints(Cm)
End Sub

 

Largeur des colonnes en centimètres

Ici cela se corse… En effet la largeur par défaut d’une colonne est de 8,43 caractères standard , c’est à dire la largeur de 8,43 caractères 0 en police Arial de taille 10 (ça ne s’invente pas !!  et où ils ont décidés cela ??).Il va donc falloir faire de l’approximation, pour cela il existe plusieurs solutions, mais en voici une que j’utilise à chaque fois que j’en ai besoin.

Sub ColonnesEnCentimetres()
     Dim Cm As Variant
     Dim TaillePoints As Long, OldLargeur As Long
     Dim Nb As Long, TailleMax As Long, TailleCurrent As Long, TailleMin As Long
     
     Cm = Application.InputBox("Entrer la largeur de la colonne en Cms", "Largeur de la colonne souhaitée", Type:=1)
     'on sort si l'utilisateur clique sur Annuler
     If Cm = False Then Exit Sub
     
     TaillePoints = Application.CentimetersToPoints(Cm)
     OldLargeur = ActiveCell.ColumnWidth
     'la largeur d'une colonne se fait en fonction de la largeur des caractères 
     ' on simule donc la largeur avec 255 caractères
     TailleMin = 0
     TailleMax = 255
     ActiveCell.ColumnWidth = TailleMax
     If TaillePoints > ActiveCell.Width Then
          MsgBox "la largeur de" & Cm & "est trop large", vbOKOnly + vbExclamation, "largeur non valable"
          ActiveCell.ColumnWidth = OldLargeur
          Exit Sub
     End If
     'maintenant on recherche par approximation la largeur la plus proche de celle demandée
     ' en divisant par 2 à chaque boucle
     ActiveCell.ColumnWidth = 127.5
     TailleCurrent = ActiveCell.ColumnWidth
     Nb = 0
     'afin de ne pas faire trop de boucles on se limite à 20 au maximum,
     ' par expérience plus de boucles ne permet pas d'avoir une meilleure précision
     ' Width est une propriété qui récupère la largeur en points, mais elle n'est qu'en lecture
     Do While (ActiveCell.Width <> TaillePoints) And (Nb < 20)
          If ActiveCell.Width < TaillePoints Then 'trop petit
               TailleMin = TailleCurrent
               'pour écrire la largeur de la colonne, nous devons utiliser la propriété ColumnWidth
               Selection.ColumnWidth = (TailleCurrent + TailleMax) / 2
          Else 'trop grand
               TailleMax = TailleCurrent
               Selection.ColumnWidth = (TailleCurrent + TailleMin) / 2
          End If
          TailleCurrent = ActiveCell.ColumnWidth
          Nb = Nb + 1 'compteur pour limiter la bouche
     Loop
End Sub 

 

Faites bon usage de ce code pour fixer la largeur des colonnes et la hauteur des lignes dans Excel …

 

Vous souhaitez créer et personnaliser des outils de gestion automatisés dans Excel  pour mieux répondre aux besoins spécifiques de votre entreprise ? Apprenez à les développer et les présenter avec des interfaces conviviales pour les usagers en suivant nos formations en programmation de macros VBA.

 


Fichier d’accompagnement VIP à télécharger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.

 

Formation complémentaire

Pour une introduction à la programmation avec le langage VBA, qui permet de sauver du temps et de réduire les risques d’erreurs en automatisant certaines tâches et certains processus, afin de développer des solutions robustes dans Excel, suivez la formation Excel – VBA (niveau 1).

 

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut