Excel - Power Query - Power Pivot - VBA

Plages et cellules

1 | Déclaration d'une plage/cellule

Dim plageZone As Range

Dans ce document, la feuille dans laquelle se trouvera la plage sera désignée sous le nom :

feuille

2 | Affectation de plages et cellules

Notation A1

Set plageZone = feuille.Range("A1:B5")

Désigne la plage A1:B5

Set plageZone = feuille.Range("A:A,C:C,F:F")

Désigne les colonnes A, C et F

Numéro d'index

Set plageZone = feuille.Cells(6, 1)
plageZone.Value = 10

La cellule A6 (ligne 6 et colonne 1) contiendra la valeur 10.

Relative à des cellules

Set plageZone=ActiveCell.Offset(1, 3)
plageZone.Font.Underline = xlDouble

Applique un souligné double à une cellule situé une ligne en dessous et 3 colonnes vers la droite de la cellule active.

Plage nommée

Set plageZone = classeur.Names("Produits").RefersToRange
plageZone.Font.Italic = True

Met en italique les cellules de la plage nommée Produits.dans le classeur classeur.

Lignes et colonnes

Set plageZone = feuille.Rows(1)
plageZone.Font.Bold = True

Met en gras toutes les cellules de la ligne A de la feuille.

Toutes les cellules

feuille.Cells.ClearContents

Efface toutes les cellules de la feuille.

La région courante

Set plageZone = feuille.Range("A1").CurrentRegion

Sélectionne la zone autour de la cellule A1, équivalent à CTRL + *. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides.

Sauf la première ligne

Set plageZone = ActiveCell.CurrentRegion
Set plageZone = plageZone.Offset(1).Resize(plageZone.Rows.Count - 1)

Manipulation de plages et cellules

Effacer

Set plageZone = feuille.Range("A1:B5")
plageZone.ClearContent

Efface le contenu des cellules de la plage A1:B5

Supprimer

Set plageZone = feuille.Range("2:2")
Set plageZone = feuille.Delete
Supprime le contenu de la ligne 2
Set plageZone = feuille.Range("B5")
plageZone.Delete xlShiftToLeft

Supprime la cellule B5 et décale vers la gauche. Autre valeur possible xlShiftUp.

Insérer

Set plageZone = feuille.Range("2:2")
plageZone.Insert

Insère une cellule au-dessus de la cellule A2

Set plageZone = feuille.Range("A2")
plageZone.Insert xlShiftDown

Insère une ligne au-dessus de la ligne 5

Set plageZone = feuille.Range("B5")
plageZone.EntireRow.Insert xlShiftDown

Insère une colonne à droite de la colonne 2

Set plageZone = feuille.Range("B5")
plageZone.EntireColumn.Insert xlShiftToRight

Copier/coller des cellules

feuille.Range("A1:E4").Copy Destination:=autre_feuille.Range("B2")

Copie la plage A1:E4 de feuille et colle ces cellules à partir de la cellule B2 de autre_feuille.

Fonctions personnalisées

Vérifie si un nom de plage existe

Renvoie True si le nom de plage sName existe. Sinon renvoie False.

Function RangeNameExists(sName) As Boolean
    Dim n As Name
    RangeNameExists = False
    For Each n In ActiveWorkbook.Names
        If UCase(n.Name) = UCase(nname) Then
            RangeNameExists = True
            Exit Function
        End If
    Next n
End Function

Tester un type de sélection

Dim c
    c = TypeName(Selection)

La variable c pourra contenir :

  • Range (une cellule ou une plage de cellule
  • ChartArea (une zone de traçage d’un graphique)
  • ChartTitle (le titre d’un graphique)
  • Series (une série dans un graphique)
  • Picture (une image)
  • Rectangle (une forme)
  • Drawing (un dessin)

Etc.

Résumé

image.png