Formation VBA - Les bases

Les commentaires :


' Ceci est un commentaire
                

Principe d'écriture :


objet.propriété = valeur (principalement pour la mise en forme des cellules)
objet.méthode

Exemple : le terme "select" est une méthode permettant de sélectionner un objet.
                

Les objets :


' Range("plage") : plage de cellule (cellule unique, cellules, une ligne ou une colonne)
Range("A1").Select
Range("A1:G23").Select

' Cells(n° ligne, n° colonne) : cellule 
Cells(1, 1).Select ' A1
Cells(2, 4).Select ' D2

' Rows : ligne
Rows("1:1").Select ' ou Rows("1").Select' 1 ligne
Rows("1:4").Select ' plusieurs lignes

' Columns : colonne
Columns("A:A").Select ' ou Columns("A").Select ' 1 colonnes
Columns(1).Select ' sélection de la colonne 1 ("A")' 1 colonnes

Columns("A:B").Select ' plusieurs colonnes

' Sheets/Worksheet : feuille de calcul
Sheets("Feuil1").Select ' ou Sheets("Feuil1").activate
Worksheet("Feuil1").Select ' ou Worksheet("Feuil1").activate

' Workbook : classeur
Workbooks("classeur2").select ' ou Workbooks("classeur2").Activate

' Application : application

' ActiveCell : cellule active
' ActiveSheet : feuille active
' ActiveWorkbook/ThisWorkbook : classeur actif

                    

Ecrire dans une cellule :


Range("A1").Value = "Bonjour" ' ou Range("A1") = "Bonjour"
Range("A1").Value = 5 ' pas entre guillemets car c'est une valeur numérique
Range("A1").Value = 5.5 ' le format des nombres décimaux est avec un point et non une virgule
Range("A1").Formula = "=A2+B2" ' ou Range("A1") = "=A2+B2"
                

Les sélections d'objets


' Les objets doivent être utilisés et sélectionnés dans l'ordre de la hiérarchie
' Du plus général au plus spécifique :
' Application* > Workbook > Worksheet > Range/Cells/Rows/Columns
' Application est utilisé dans certains cas précis

Workbooks("classeur2").activate
Sheets("Feuil1").activate
Range("A1").Select

' Il est préférable de ne pas utiliser la méthode "Select" mais d'utiliser directement l'objet
' en programmation, moins il y a d'instructions, plus le code est rapide et efficace
' Il est possible d'appliquer une action à plusieurs objets en même temps (hors "Select") :

Workbooks("classeur2").Sheets("Feuil1").Range("A1").value = "Bonjour"

                

Mise en forme :


' Propriété : Interior - intérieur de la cellule
Range("A1").Interior.Color = vbRed ' couleur de fond cellule rouge
'vbRed, vbGreen, vbBlue, vbYellow, vbMagenta, vbCyan, vbWhite, vbBlack

' Propriété : Font - mise en forme de la police
Range("A1").Font.Color = vbWhite ' couleur de la police
Range("A1").Font.Bold = True ' True ou False (gras ou pas)
Range("A1").Font.Italic = True ' True ou False (italique ou pas)
Range("A1").Font.Name = "Calibri" ' police d'écriture
Range("A1").Font.Size = 12 ' taille de la police
                

Les couleurs :


Range("A1").Interior.Color = RGB(21, 61, 100) 'bleu foncé

                

With / End With


With Range("D7")
    .Value = "ABC"
    .Interior.Color = RGB(90, 90, 90) 'gris foncé
    With .Font
        .Color = vbWhite
        .Name = "Calibri"
        .Bold = True
    End With
End With
                

Les bordures / le quadrillage :



' Propriété : Borders - bordures

'Valeurs supprimées :
'.ColorIndex = 0 ' valeur nulle donc pas utile
'.TintAndShade = 0 ' valeur nulle donc pas utile
'.Weight = xlThin ' épaisseur de la ligne - inutile car c'est la valeur application par défaut

' Code simplifié/nettoyé comparé à l'enregistreur de macros :
    With Range("A1:D10")
        .Borders(xlEdgeLeft).LineStyle = xlContinuous ' type de ligne
        .Borders(xlEdgeTop).LineStyle = xlContinuous ' type de ligne
        .Borders(xlEdgeBottom).LineStyle = xlContinuous ' type de ligne
        .Borders(xlEdgeRight).LineStyle = xlContinuous ' type de ligne
        .Borders(xlInsideVertical).LineStyle = xlContinuous ' type de ligne
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous ' type de ligne
        .Borders(xlEdgeLeft).Color = RGB(100, 100, 100) ' type de ligne ' couleur de la ligne
        .Borders(xlEdgeTop).Color = RGB(100, 100, 100) ' type de ligne ' couleur de la ligne
        .Borders(xlEdgeBottom).Color = RGB(100, 100, 100) ' type de ligne ' couleur de la ligne
        .Borders(xlEdgeRight).Color = RGB(100, 100, 100) ' type de ligne ' couleur de la ligne
        .Borders(xlInsideVertical).Color = RGB(100, 100, 100) ' type de ligne ' couleur de la ligne
        .Borders(xlInsideHorizontal).Color = RGB(100, 100, 100) ' type de ligne 'couleur de la ligne
    End With
                

Suppressions :


' Méthode "Clear"
Range("A1").Clear ' efface tout (format + contenu)
Range("A1").ClearFormats ' efface le format
Range("A1").ClearContents ' efface le contenu
Columns("A").Delete ' supprime l'objet

' Attention :
' Lors de la suppression d'une ou plusieurs lignes ou une ou plusieurs colonnes, les éléments suivants se décalent.
' Exemple :
' J'ai des données dans les colonnes de A jusqu'à F. Si je supprime la colonne D, les éléments qui se trouvaient dans la colonne E se trouveront colonne D et ceux de la colonne F se trouveront colonne E.
' La colonne F deviendra vide

' Seuls les objets et leur contenu peuvent être supprimés
' Les méthodes pour supprimer certains éléments diffèrent (à tester avec l'enregistreur de macros)

' Enlever la couleur de fond d'une cellule :
Range("A1").Selection.Interior.Pattern = xlNone

' Enlever une ou des bordures :
Range("A1:B2").Borders(xlDiagonalDown).LineStyle = xlNone ' "xlDiagonalDown" doit être modifié selon la bordure à supprimer
                

Dimensions des lignes et colonnes :


Columns("F:F").ColumnWidth = 15 ' largeur de la colonne F
Rows("1:1").RowHeight = 20 ' hauteur de la ligne 1
Cells.Select ' sélections de toutes les cellules de la feuille
Cells.EntireColumn.AutoFit ' ajustement auto de la largeur des colonnes (correspond à un double clic sur la bordure droite de la colonne)
Cells.EntireRow.AutoFit ' ajustement auto de la hauteurs des lignes (correspond à un double clic sur la bordure inférieure de la ligne)
                

Objets

Valeurs

Variables

Propriétés

Méthodes