CathyAstuce

VBA

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

MÉTHODE POUR MANIPULER UNE PLAGE

Activation etsélection    Couper, copier, coller Imprimer    Supprimer  Calculer Tri et sous-totaux  

Remonter I. Activation et sélection

Tout d'abord vous pouvez activer (Activate) une cellule et/ou sélectionner (Select) une plage. Dans l'exemple suivant, vous sélectionnez la plage A1:C3 puis activer la cellule B2, c'est à dire que la plage A1:C3 est en couleur de sélection et la cellule B2 est blanche et prête à accueillir des données :

Sub SelecActiv()
   Range("A1:C3").Select
   Range("B2").Activate
End Sub

Remonter II. Couper, copier, coller

Vous coupez avec la méthode Cut et copier avec Copy, vous pouvez effectuer immédiatement le collage. Les syntaxes sont :

  • UnePlage.Cut(Destination) Destination représente une plage où vous voulez coller ce qui est coupé. Dans le cas où vous ne renseignez pas Destination les données sont placées dans le presse-papier.
  • UnePlage.Copy(Destination)  Destination représente une plage où vous voulez coller ce qui est coupé. Dans le cas où vous ne renseignez pas Destination les données sont placées dans le presse-papier.

Si vous n'avez pas renseigné Destination , vous pouvez coller avec la méthode PasteSpecial. Sa syntaxe est : UnePlage.PasteSpecial(Paste, Operation, SkipBlanks, Transpose) où :

  • Paste  qui doit être une de ces constantes : xlPasteAll (Tout), xlPasteFormulas (Formule), xlPasteValues (Valeur), xlPasteFormats (Foramt), xlPasteNotes (Notes) ou xlPasteAllExceptBorders (Tout sauf les bordures). Si vous ne le renseignez pas, la valeur sera xlPasteAll.
  • Operation  qui représente le type d'opération : xlPasteSpecialOperationNone (aucune), xlPasteSpecialOperationAdd (addition), xlPasteSpecialOperationSubtract (soustraction), xlPasteSpecialOperationMultiply  (multiplication), ou xlPasteSpecialOperationDivide (division). La valeur par défaut est xlPasteSpecialOperationNone.
  • SkipBlanks  doit être à True pour que les cellules vides de la plage provenant du Presse-papiers ne soient pas collées, la valeur par défaut est False.
  • Transpose  doit être à True pour transposer les lignes et les colonnes (les données en ligne se retrouvent en colonne et inversement).

Exemple :

Sub CopierColler()
   Dim L As Byte, C As Byte
   Dim Plage As Range

   For L = 1 To 10
      For C = 1 To 5
         Cells(L, C) = L & C
         Cells(L, C).Interior.Color = RGB(225 - (L * 10), C * 20, 0)
      Next C
   Next L
   Range("A1:B2").Copy
   Range("G1").PasteSpecial xlPasteAll
   Range("G4").PasteSpecial xlPasteValues
   Range("G7").PasteSpecial xlPasteFormats
End Sub

Remonter III. Imprimer

Pour imprimer utilisez la méthode PrintOut, sa syntaxe est la suivante :
UnePlage.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName) où :

  • From   représente le numéro de la page à partir de laquelle commence l'impression. Si vous ne le spécifiez pas l'impression commence à la 1ère page.

  • To   représente le numéro de la dernière page à imprimer. Si vous ne le spécifiez pas l'impression s'effectue jusqu'à la dernière page.

  • Copies   représente le nombre de copies à imprimer. Si vous ne le spécifiez pas une seule copie est imprimée.

  • Preview  doit être à True pour afficher un aperçu avant l'impression.

  • ActivePrinter   définit le nom de l'imprimante.

  • PrintToFile   doit être à True  pour imprimer dans un fichier. Si vous ne spécifiez pas PrToFileName, Excel invite l'utilisateur à entrer le nom du fichier.

  • Collate   doit être à True pour assembler plusieurs copies.

  • PrToFileName   spécifie le nom du fichier vers lequel vous souhaitez effectuer l'impression.

Remonter IV. Supprimer

Utilisez la méthode Delete, la syntaxe est : UnePlage.Delete(Shift) où  indique comment décaler les cellules,  xlShiftToLeft (vers la gauche) ou xlShiftUp (vers le haut).

Remonter V. Calculer

Pour forcer le calcul d'une plage utilisez la méthode Calculate.

Sub Calculer()
   Dim L As Byte

   Application.Calculation = xlCalculationManual ' le calcul est manuel
   For L = 1 To 5
      Range("C" & L).FormulaLocal = "=A" & L & "+B" & L
      Range("A" & L) = L
      Range("B" & L) = L * 2
   Next L
   Range("C1:C2").Calculate
End Sub

Remonter VI. Trie et sous-totaux

La méthode Sort permet de gérer le tri et SubTotal les sous-totaux. La méthode RemoveSubtotal permet de supprimer l'ensemble des sous-totaux d'une plage.
Syntaxe:

MaPlage.Sort Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod

Key1, Key2, Key3  la cellule contenant le titre du champ. 1 pour le 1er champ, 2 pour le 2ème et 3 pour le 3ème (dans l'ordre du tri
Order1, Order2, Order3 xlAscending (tri ascendant) ou xlDescending (tri descendant)
Type (pour les tableaux dynamiques) xlSortLabels (tri sur les étiquettes) ou xlSortValues (tri sur les valeus)
Header xlNo (pas d'en têtes) ou xlYes (des en-têtes dans le tableau, xlGuess (Excel décide).
OrderCustom 1 par défaut, correspond à la liste qui sert de base au tri. 1 correspond au tri alphanumérique standard. Si vous avez établi des listes personnalisées, vous pouvez triez en indiquant cette liste, pour connaître son index :
Outils/Options/Listes pers., l'index correspond à l'index de la liste Listes personnalisées (votre liste est écrite sur la 5ème ligne, donc Index=5), Nouvelle liste a l'index 1.
MatchCase True pour distinguer les majuscules des minuscules, False dans le cas inverse.
Orientation   xlSortRows, le trie s'effectue par ligne (de haut en bas)
xlSortColumns, le tri s'effectue par colonne (de gauche à droite)
xlSortColumns Ne concerne pas la version française

MaPlage.SubTotal GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData

GroupBy l'index du champ sur lequel le regroupement s'opère, le champ le plus à gauche ou le plus haut a l'index 1.
Function L'opération a effectuer pour le sous-total :
xlAverage (moyenne), xlCount (nombre, nv), xlCountNums (nombre de valeur, nbval), xlMax (maximum), xlMin (minimum), xlProduct (produit), xlStDev (Ecart type), xlStDevP (Ecart typeP), xlSum (somme), xlVar (Var) ou xlVarP (VarP)
TotalList tableau contenant les index des champs sur lesquels se feront les sous-totaux. Exemple, Array(2,3) indique que les sous-totaux se feront sur les champs d'index 2 et 3. Cf GroupBy
Replace True pour remplacer des sous-totaux existants, la valeur par défaut est False.
PageBreaks True pour ajouter des sauts de page après chaque groupe. La valeur par défaut est False.
SummaryBelowData

xlSummaryBelow (pardéfaut), synthèse sous les données,
xlSummaryAbove, synthèse au-dessus des données.

L'exemple suivant permet de trier un tableau puis de lui ajouter des sous-totaux :

Sub Tri_SousTotaux()
   Dim L As Byte

   Range("A1:C12").RemoveSubtotal 'supprime les éventuels sous-totaux existants
   Range("A1") = "Champ de tri"
   Range("B1") = "champ1 à sommer"
   Range("C1") = "champ2 à sommer"
   For L = 2 To 12
      If L Mod 2 = 0 Then
         Range("A" & L) = "Texte n°" & L
      Else
         Range("A" & L) = "Texte n°" & L + 1
      End If
      Range("B" & L) = L
      Range("C" & L) = L * 2
   Next L
   MsgBox "Données affichées"
   With Range("A1:C12")
      .Sort Range("A1"), xlAscending
      .Subtotal 1, xlSum, Array(2, 3), , , xlSummaryBelow
   End With
End Sub

AccueilDébut de la page