Accueil

VBA

 

Besoin d'une assistance, d'une application
MS Office

Consultez GEMCCAP

Ecrivez-moi

Sommaire

Les cellules
Cellule
Méthodes
Évènements

PROPRIÉTÉS D'UNE CELLULE

Correspondant au Format de cellule
onglet Nombre
onglet Alignement

onglet Police
onglet Bordure
onglet Motifs

onglet Protection
La taille et l'affichage Le contenu Le ou les emplacements
Adresse
Région
dernière cellule

Remonter I. Correspondant au format de la cellule

Remonter I.1 onglet Nombre

Vous avez 2 propriétés à votre disposition :

  • NumberFormat renvoie ou définit une chaîne similaire au contenu de la zone Type de la boîte de dialogue Format de cellule. Ce format est exprimé en Anglais, c'est à dire que pour retrouver, par exemple, le format "jj/mm/aa" dans la boîte de dialogue, vous devez utilisez le code suivant : ActiveCell.NumberFormat = "dd/mm/yy". Cela permet le transport aisé entre les différentes versions linguistiques d'Excel.
  • NumberFormatLocal renvoie ou définit une chaîne identique au contenu de la zone Type de la boîte de dialogue Format de cellule. Ce format est exprimé dans la langue de l'utilisateur. Si vous ne travaillez que pour des utilisateurs Français, vous éviterez des erreurs en utilisant cette propriété. Avec l'exemple ci-dessus, vous devez donc tapez la ligne de code suivante : ActiveCell.NumberFormatLocal = "jj/mm/aa"

Remonter I.2 onglet Alignement

Propriétés Valeurs Correspond à
HorizontalAlignment
xlHAlignCenter,
xlHAlignJustify,
xlHAlignLeft,
xlHAlignRight, xlHAlignGeneral,
xlHAlignCenterAcrossSelection
Alignement horizontal Centré,
Justifié,
Gauche,
Droite,
Standard,
Centré sur plusieurs colonnes
VerticalAlignment
xlVAlignBottom,
xlVAlignCenter,
xlVAlignJustify,
xlVAlignTop
Alignement vertical Bas,
Centré,
Justifié,
Haut
Orientation xlDownward,
xlHorizontal,
xlUpward,
xlVertical
un entier de -90 à 90
Incliné à -90°
horizontal (0°)
Incliné à 90°
Verticale
Incliné de entier°
WrapText True le texte est renvoyé automatiquement.
MergeCells True Les cellules sont fusionnées.

Exemple :

Sub Alignement_Plage()
   With ActiveCell
      .HorizontalAlignment = xlHAlignCenter
      .VerticalAlignment = xlVAlignCenter
      .Orientation = xlUpward
      .WrapText = True
      .Value = "Essai de texte et d'alignement de ce texte dans la cellule"
   End With
End Sub

Remonter I.3 onglet Police

Toutes les possibilités de format se retrouve dans la propriété Font. En effet, celle-ci renvoie un objet Font qui représente la police de la cellule et qui possèdent plusieurs propriétés.

Font. Valeur Correspond à
Bold True Gras
Color RGB(r,v,b) où r,v,b sont des entiers de 0 à 255 correspondant à la quantité de rouge, vert, bleu La couleur de la police
ColorIndex un entier de 1 à 55 correspondant à l'index de la couleur dans la palette en cours ou  xlColorIndexAutomatic (automatique) ou xlColorIndexNone (aucune) La couleur de la police
Italic True Italique
Name Une chaîne Le nom de la police
Size Une donnée Variant La taille de la police
Strikethrough True Barrée par une ligne horizontale
Subscript True Mis en indice
Superscript True Mis en exposant
Underline
xlUnderlineStyleNone,
xlUnderlineStyleSingle,
xlUnderlineStyleDouble,
xlUnderlineStyleSingleAccounting
xlUnderlineStyleDoubleAccounting
Le soulignement :
Aucun
Simple
Double
Comptabilité simple
Comptabilité double

Exemple :

Sub Police_Plage()
    With ActiveCell
        .Value = "Essai de texte"
        With .Font
            .Bold = True
            .Color = RGB(153, 0, 0)
            .Italic = True
            .Name = "Comic sans MS"
            .Size = 50
            .Underline = xlUnderlineStyleDouble
        End With
    End With
End Sub

Remonter I.4 onglet Bordure

Tout comme pour la police, les bordures se gèrent avec la collection d'objets Borders qui possèdent essentiellement les propriétés Color, ColorIndex, LineStyle et Weight.

Borders(xlInsideHorizontal) Bordure Horizontale
Borders(xlInsideVertical) Bordure Verticale
Borders(xlDiagonalDown) Bordure Diagonale descendante
Borders(xlDiagonalUp) Bordure Diagonale montante
Borders(xlEdgeBottom) Bordure Inférieure
Borders(xlEdgeLeft) Bordure Gauche
Borders(xlEdgeRight) Bordure Droite
Borders(xlEdgeTop) Bordure Supérieure
Propriétés Valeurs Correspond à
Color RGB(r,v,b) où r,v,b sont des entiers de 0 à 255 correspondant à la quantité de rouge, vert, bleu La couleur
ColorIndex un entier de 1 à 55 correspondant à l'index de la couleur dans la palette en cours ou  xlColorIndexAutomatic (automatique) ou xlColorIndexNone (aucune) La couleur
LineStyle

xlLineStyleNone
xlContinuous
xlDash
xlDashDot
xlDashDotDot
xlDot
xlDouble
xlSlantDashDot
le style de ligne de la bordure
Aucune
Continue
Tiret
Tiret-Point
Tiret-Point-Point
Pointillé
Double
Spécial
Weight Une valeur de type long ou
xlHairline
xlThin
xlMedium
xlThick
la largeur précise ou
Très fin
Fin
Moyen
Epais

Exemple :

Sub Bordure_Plage()
   With Selection
      .Value = "Essai"
      .Borders.Color = RGB(0, 51, 102)
      .Borders(xlEdgeBottom).Weight = xlMedium
      .Borders(xlEdgeTop).Weight = xlThick
      .Borders(xlEdgeLeft).Weight = xlHairline
      .Borders(xlEdgeRight).Weight = xlThin
      .Borders.LineStyle = xlContinuous
   End With
End Sub

Remonter I.5 onglet Motifs

De nouveau le même principe, les fonds et motifs sont gérés par la propriété Interior qui renvoie l'objet Interior, qui lui-même a des propriétés.

.Interior Valeurs Correspond à
Color RGB(r,v,b) où r,v,b sont des entiers de 0 à 255 correspondant à la quantité de rouge, vert, bleu La couleur du fond
ColorIndex un entier de 1 à 55 correspondant à l'index de la couleur dans la palette en cours ou  xlColorIndexAutomatic (automatique) ou xlColorIndexNone (aucune) La couleur du fond
Pattern Une des 20 constantes XlPattern Type de motif
PatternColor RGB(r,v,b) où r,v,b sont des entiers de 0 à 255 correspondant à la quantité de rouge, vert, bleu La couleur du motif
PatternColorIndex un entier de 1 à 55 correspondant à l'index de la couleur dans la palette en cours ou  xlColorIndexAutomatic (automatique) ou xlColorIndexNone (aucune) La couleur du motif

Exemple :

Sub Bordure_Plage()
   With Range("A1:B10").Interior
      .Color = RGB(255, 255, 204)
      .Pattern = xlPatternGray16
      .PatternColor = RGB(0, 102, 0)
   End With
End Sub

Remonter I.6 onglet Protection

  • Vous pouvez déverrouiller ou verrouiller une cellule avec la propriété Locked.
  • Vous pouvez également masquer la formule avec la propriété FormulaHidden.

Ainsi, vous pouvez préparer une feuille en VBA, en déverrouillant quelques cellules et en masquant celles qui contiennent une formule avant de protéger la feuille :

Sub Protection()
   Range("A1") = 1
   Range("B1") = 2
   Range("C1").FormulaLocal = "=SOMME(A1:B1)"
   Range("A1:B1").Locked = False
   Range("C1").FormulaHidden = True
   ActiveSheet.Protect
End Sub

Remonter II. La taille et l'affichage

  • Largeur et hauteur : propriétés Height et Width, elles s'expriment en points (0,35 mm).
  • Ajuster automatiquement la largeur d'une colonne ou la hauteur d'une ligne, utilisez la propriété AutoFit qui ne s'applique que sur une (ou des) ligne entière ou une (ou des) colonne entière. ActiveCell.EntireColumns.AutoFit
  • La propriété Left, vous permet de connaître en point la distance du bord gauche de la colonne A au bord gauche de la plage.
  • La propriété Hidden permet de masquer (=True) ou afficher (=False) une ligne ou une colonne. Elle ne fonctionne que sur la ligne ou la colonne entière. En conséquence, vous utilisez le code comme dans les exemples suivants :
    • Range("A:A").Hidden=True
    • Ou Rows(2).Hidden=True
    • Ou ActiveCell.EntireColumn.Hidden=true ,où EntireColumn renvoie la colonne entière à partir d'une cellule et EntireRow renvoie la ligne entière à partir d'une cellule.
  • Pour paramétrer les formats conditionnels, utilisez la propriétés FormatConditions qui renvoient une collection FormatConditions qui renvoient tous les formats conditionnels de la plage. Ces objets FormatCondition ont une propriété correspond à chacun de ses paramètres (bordure : Borders, fond: Interior, police : Font, formule : Formula1 et Formula2, type : Type). Vous pouvez en ajouter une : ActiveCell.FormatConditions.Add (xlCellValue, xlGreater, "=$A$1"), ou en modifiez une :  ActiveCell.FormatConditions(1) .Modify xlCellValue, xlLess,"=$B$1". Pour en supprimer une, il vous faut d'abord les supprimer toutes (ActiveCell.FormatConditions.Delete) puis recréer celles que vous désiriez garder.

Sub FormatConditionnel()
   With Range("A1")
      .Value = 1
      .DataSeries xlColumns, xlDataSeriesLinear, , 5, 50
      With .CurrentRegion.FormatConditions
         .Add xlCellValue, xlLess, "20"
         .Add xlCellValue, xlGreater, "40"
         .Add xlCellValue, xlBetween, "20", "40"
      End With
      With .CurrentRegion
         .FormatConditions(1).Interior.Color = RGB(255, 255, 153)
         .FormatConditions(2).Interior.Color = RGB(255, 102, 51)
         .FormatConditions(3).Interior.Color = RGB(255, 255, 204)
      End With
   End With
End Sub

Remonter III. Le contenu

  • La propriété Value étant la propriété par défaut de l'objet Range, vous pouvez directement attribuez ou lire une valeur à une cellule. Exemple :

Sub Lecture_Ecriture()
   ActiveCell = "Essai"
   With ActiveCell
      .Offset(1, 0) = "No"
      .Offset(2, 0) = 1
      .Offset(0, 1) = .Offset(1, 0) & " " & .Offset(2, 0)
   End With
End Sub

  • Lorsque la cellule contient du texte, vous pouvez vous référer à une partie du texte pour le mettre en forme ou le modifier avec la propriété Characters.

Sub Etude_Caracters()
   With ActiveCell
      .Value = "Essai de texte"
      .Characters(1, 5).Font.Bold = True
   End With
End Sub

  • Pour attribuer une formule ou travailler sur la formule que contient une cellule, vous avez les propriétés suivantes à votre disposition :
    Formula Renvoie ou définit la formule de l'objet dans le style de référence A1 dans la langue de la macro, soit l'anglais.
    FormulaLocal Renvoie ou définit la formule de l'objet dans le style de référence A1 dans le langage de l'utilisateur.
    FormulaR1C1 Renvoie ou définit la formule de l'objet, en utilisant les notations de style R1C1 dans le langage de la macro, soit l'anglais.
    FormulaR1C1Local Renvoie ou définit la formule de l'objet, en utilisant les notations de style R1C1 dans le langage de l'utilisateur.

    Si vous travaillez uniquement pour des applications en langue française, je vous conseille d'utiliser les propriétés FormulaLocal et FormulaR1C1Local qui vous permettent de créer votre formule dans une cellule, puis de la copier et enfin de la coller dans votre code VBA (ainsi vous évitez les erreurs), alors que les 2 autres propriétés impliquent que vous connaissiez le nom des fonctions en Anglais.

Sub Formules()
   With Range("A1")
      .Value = 1
      .DataSeries xlColumns, xlDataSeriesLinear, , 5, 50
   End With
   With Range("B1")
      .FormulaLocal = "=SOMME(A:A)"
      Range("C1") = "FormulaLocal : " & .FormulaLocal
      Range("C2") = "Formula : " & .Formula
      Range("C3") = "FormulaR1C1 : " & .FormulaR1C1
      Range("C4") = "FormulaR1C1Local : " & .FormulaR1C1Local
   End With
   Columns("C").AutoFit
End Sub

Remonter IV. Le ou les emplacements

À partir d'une cellule, vous pouvez connaître son adresse, la plage de cellules contiguës, la dernière cellule de cette plage.

Remonter IV.1 Adresse

La propriété Address renvoie l'adresse de la cellule sous forme de texte.

MsgBox ActiveCell.Address

Remonter IV.2 Région

Une région est une plage de cellules contiguës limité par des lignes et colonnes vide. Avec la propriété CurrentRegion, vous récupérez la plage qui constitue une région à partir d'une cellule. Exemple :

Sub Region()
   Dim L As Byte, C As Byte

   For L = 1 To 10
      For C = 1 To 5
         Cells(L, C) = L & C
      Next C
   Next L
   Cells(1, 1).CurrentRegion.Interior.Color = RGB(255, 255, 102)
End Sub

Remonter IV.3 La dernière cellule

Avec la propriété End, vous pouvez connaître la dernière cellule vers le bas, le haut, la droite ou la gauche de n'importe quelle cellule d'une région. Exemple :

Sub RegionFin()
   Dim L As Byte, C As Byte

   For L = 1 To 10
      For C = 1 To 5
         Cells(L, C) = L & C
      Next C
   Next L
   Cells(1, 1).CurrentRegion.Interior.Color = RGB(255, 255, 204)
   With Range("A1")
      .End(xlDown).Interior.Color = RGB(255, 102, 51)
      .End(xlToRight).Interior.Color = RGB(255, 255, 153)
      .End(xlToRight).End(xlDown).Interior.Color = RGB(0, 102, 0)
   End With
End Sub

AccueilDébut de la page