Cellules et plages de cellules dans Excel VBA

L’objet Range possède une grande collection de méthodes qui permettent au développeur de programmer une série d’actions allant de la copie d’une plage dans le presse-papiers à la recherche de la racine d’une équation non linéaire, en passant par le formatage de la plage. Les méthodes les plus utilisées pour l’objet Range sont :

■ Activate;

■ AddComment;

■ AutoFill;

■ AutoFit;

■ BorderAround;

■ Clear;

■ ClearComments;

■ ClearComments;

■ ClearContents;

■ ClearFormats;

 

■ ClearNotes;

■ Copy;

■ CopyPicture;

■ Cut;

■ DataSeries;

■ Delete;

■ FillDown;

■ FillLeft;

■ FillRight;

■ FillUp;

 

■ Find;

■ FindNext;

■ FindPrevious;

■ FunctionWizard;

■ GoalSeek;

■ Insert;

■ PasteSpecial;

■ Replace;

■ Select;

■ Show.

 

En plus des méthodes, l’objet Range possède aussi des propriétés. Les propriétés de l’objet Range vous permettent de contrôler son apparence à l’automatisation informatique. Les principales propriétés de l’objet Range sont:

 

■ Address;

■ AllowEdit;

■ Areas;

■ Borders;

■ Cells;

■ Characters;

■ Column;

■ Columns;

■ ColumnWidth;

■ Comment;

■ Count;

■ CurrentRegion;

■ End;

■ EntireColumn;

■ EntireRow;

■ Font;

 

■ Formula;

■ FormulaArray;

■ FormulaHidden;

■ FormulaLocal;

■ FormulaR1C1;

■ FormulaR1C1Local;

■ HasFormula;

■ Height;

■ Hidden;

■ HorizontalAlignment;

■ Hyperlinks;

■ Interior;

■ Left;

■ Locked;

■ Name;

■ NumberFormat;

 

■ Offset;

■ Orientation;

■ Resize;

■ Row;

■ RowHeight;

■ Rows;

■ ShrinkToFit;

■ Top;

■ UseStandardHeight;

■ UseStandardWidth;

■ Value;

■ VerticalAlignment;

■ Width;

■ Worksheet;

■ WrapText.

Vous pouvez trouver les informations nécessaires sur l’utilisation des méthodes et des propriétés sur l’objet Range dans le système d’aide VBA.

Avec l’aide des objets Range et Cells, vous disposez de nombreuses options pour accéder à des cellules individuelles ou à des plages de cellules entières d’une feuille de calcul. La cellule active est appelée ActiveCell.
Avec l’objet Range, les plages de cellules contiguës et non contiguës peuvent être sélectionnées. Une lettre est donnée pour la colonne et un numéro pour la ligne. Certaines possibilités sont présentées dans le tableau suivant.

Plage Description
Range (“A3”).Select Sélectionne une cellule
Range (“A3:F7”).Select Sélectionne la plage de cellules associée
Range (“A3, C5, E2”).Select Sélectionne plusieurs cellules non contiguës
Range (“A8, B2:C4, E2”).Select Sélectionne plusieurs cellules ou plages de cellules non contiguës.

Les plages de cellules peuvent également être des colonnes ou des lignes entières, comme indiqué dans le tableau suivant.

Plage Description
Range (“A:A”).Select Sélectionne la colonne entière
Range (“C:E”).Select Sélectionne plusieurs colonnes contiguës
Range (“B:D, F:F, H:I”).Select Sélectionne plusieurs colonnes non contiguës
Range (“3:3”).Select Sélectionne la ligne entière
Range (“3:5”).Select Sélectionne plusieurs lignes contiguës
Range (“3:5, 8:9, 12:12”).Select Sélectionne plusieurs lignes non contiguës
Range (“A2: B4, 7: 8, D: E, G2: H4 “).Select Une combinaison d’options

1 Activation, sélection et remplissage une de plage de cellules

1.1 Sélection d’une plage à partir de l’objet Range
La méthode Activate de l’objet Range active la plage et la méthode Select sélectionne la plage.

Sub ActivationSelection
'Étape 1: La feuille de calcul Feuil1 du classeur actif devient la feuille active
    ThisWorkbook.Worksheets("Feuil1").Activate
'Étape 2: La cellule A3 est activée
    Range("A3").Activate
'Étape 2: La valeur 5 est insérée dans la cellule active (Cellule A3)
    ActiveCell.Value = 5
'Étape 3: La plage de cellule A4 :A10 est sélectionnée
    Range("A4:A10").Select
'Étape 4: La valeur 11 est insérée à la plage de cellules sélectionnée (A4 :A10)
    Selection.Value = 11
End sub

Figure: Sélection d’une plage de cellules

Commentaires

■ L’objet Range a pour argument la cellule A3 dans le premier cas et A4:A10 dans le deuxième cas.

■ La cellule A3 est d’abord activée grâce à la méthode Activate , puis la valeur 5 est entrée avec la propriété Value.

■ La plage A4:A10 est sélectionnée avec la méthode Select et la valeur 11 est entrée dans la plage sélectionnée.

■ Ainsi, la propriété Value définit le contenu de la cellule A3 et de la plage de cellules A4:A10.

Workbook, Worksheet, Range et Value sont des expressions anglaise qui

1.2 Insérer une valeur avec la propriété Cells
La propriété Cells permet non seulement d’atteindre toutes les cellules d’une feuille de calcul, mais également de sélectionner des cellules individuelles ou des plages de cellules.
Il spécifie un nombre pour les lignes et un nombre pour la colonne.
Travailler avec l’objet Cells offre des avantages par rapport à l’objet Range. Le numéro de ligne et le numéro de colonne peuvent ensuite être formés à l’aide de variables. La procédure suivante insère une valeur à une plage de cellules :

Sub SelectionCells()
'Étape 1: La feuille de calcul Feuil1 du classeur actif devient la feuille active
    ThisWorkbook.Worksheets("Feuil1").Activate
'Étape 2: Le contenu "bac" est inséré dans la cellule F2
    Cells(2, 6).Value = "bac"
'Étape 3: Le contenu "eck" est inséré dans la plage de cellules F4 :I6
    Range(Cells(4, 6), Cells(6, 9)).Value = "eck"
End Sub

Figure : Insérer une valeur avec la propriété Cells

Commentaires 

■ Ainsi la valeur « bac »  est affecté à la cellule Cells(2, 6) au moyen de la propriété Value. Cells(2, 6) représente la deuxième ligne et la sixième colonne, c’est-à-dire la cellule F2.
■ Et aussi, la valeur la plage «eck » est affectée à la plage de cellules Range(Cells(4, 6), Cells(6, 9)) au moyen de la propriété Value.  Range(Cells(4, 6), Cells(6, 9))  représente la plage de cellules Range(F4 :I6).

Workbook, Worksheet, Range et Value sont des expressions anglaise qui

1.3 Entrer des valeurs et des formules
La procédure suivante insère des nombres, des dates, des pourcentages et des formules dans des cellules:

Sub InsertionValeursFormules()
    ThisWorkbook.Worksheets("Feuil1").Activate
' Nombre
    Range("B1").Value = 14
    Range("B2").Value = 245.17
    Range("B3").FormulaLocal = "=SOMME(B1:B2)"
' Date
    Range("B4").Value = "2019/11/23"
    Range("B5").Value = "2009/08/18"
    Range("B6").FormulaLocal = "=B4-B5"
' Pourcentage
    Range("B7").Value = 0.215
End Sub

Figure : Entrer des valeurs et des formules

Commentaires
■ En utilisant la propriété Value déjà connue, une valeur numérique est attribuée aux cellules B1 et B2.
■ Pour les nombres avec des décimales, vous devez entrer un point au lieu d’une virgule.
■ La formule = SOMME (B1: B2) est définie comme la valeur de la propriété FormulaLocal.
■ Les guillemets ne doivent pas manquer pour les dates.

■ La formule = B4 – B5 est utilisée pour calculer la différence entre les deux dates.
■ Le contenu de la cellule B7 est encore une valeur numérique

1.4 Remplir une plage d’une valeur
La méthode FillDown de l’objet Range remplit la plage de haut en bas en fonction des valeurs en haut de la plage, en copiant ces valeurs dans toutes les autres cellules de la plage.
La méthode FillUp de l’objet Range remplit la plage de bas en haut en fonction des valeurs en bas de la plage.
La méthode FillLeft de l’objet Range remplit une plage de droite à gauche en fonction des valeurs de la colonne la plus à droite de cette plage.
La méthode FillRight d’un objet Range remplit une plage de gauche à droite en fonction des valeurs de la colonne la plus à gauche de cette plage.
Par exemple, cette instruction copie le contenu de la cellule A10 dans chacune des cellules de la plage A1: A10.

Sub RemplirFillUp
    Range("A1:A10").FillUp
End Sub

2 La saisie semi-automatique ?
Les cellules peuvent être remplies automatiquement avec certaines informations. La fonction de saisie semi-automatique prévue pour ce faire, est appelée à l’aide du marqueur de saisie semi-automatique (croix noire près du coin inférieur droit des cellules sélectionnées) lorsque vous déplacez le pointeur de la souris dessus.

Vous pouvez également utiliser la saisie semi-automatique en cliquant sur le bouton Recopier dans le groupe de commandes Édition de l’onglet Accueil du ruban. La saisie semi-automatique est utile lorsque vous voulez:
■ entrer les mêmes informations dans les cellules adjacentes;
■ entrer des listes (par exemple les jours de la semaine) en définissant une séquence de nombres ou de dates.

2.1 Remplir une plage avec une progression
La méthode DataSeries de l’objet Range remplit la plage dans une progression. La méthode DataSeries programme l’exécution de la commande Série lorsque vous cliquez sur le bouton Recopie dans le groupe de commandes Édition sous l’onglet Accueil du ruban. La syntaxe de la méthode DataSeries est :

DataSeries(RowCol, Type, Date, Step, Stop, Trend)
■ RowCol est un paramètre facultatif définissant la direction dans laquelle la progression est créée. Ses constantes sont: xlRows (le long des lignes), xlColumns (le long des colonnes). Si le paramètre est omis, les dimensions de cette plage sont utilisées pour définir la direction.
■ Type est un paramètre facultatif spécifiant le type de progression. Ses constantes (XlDataSeriesType) sont: xlDataSeriesLinear (linéaire, par défaut), xlGrowth (géométrique), xlChronological (dates), xlAutoFill (saisie semi-automatique).
■ Date est un paramètre facultatif qui spécifie le type de la séquence de dates si le paramètre Type est xlChronological. Ses constantes (XlDataSeriesDate) sont  xlDay (jours, par défaut), xlWeekday (jours de la semaine), xlMonth (mois), xlYear (années).
■ Step est un paramètre facultatif qui détermine le pas de modification de la progression. La valeur par défaut est définie sur 1.
■ Stop est un paramètre facultatif qui définit la valeur limite de la progression. Par défaut, une progression est construite dans toute la plage sélectionnée.
■ Trend est un paramètre facultatif qui prend les valeurs booléennes. Si la valeur du paramètre est True, une progression arithmétique ou géométrique est créée et si False, une liste est créée.
Par exemple, l’instruction suivante affichera les éléments d’une progression arithmétique dont le pas est 5 et 0 est son premier membre, et 30 est le dernier, c’est-à-dire les nombres suivants seront affichés dans la plage A1: A7: 0, 5, 10, 15, 20, 25 et 30.

Sub ProgressionPas()
    Range("C1").Value = 0
    Range("C1").DataSeries Rowcol:=xlColumns, Type:=xlDataSeriesLinear, _
    Step:=5, Stop:=30
End Sub

Figure: Progression arithmétique dont le pas est 5

La macro suivante affiche les éléments d’une progression géométrique dans la plage A1:A6  avec un pas de 3 et 2 étant le premier élément de la liste. Ainsi, les nombres 2, 6, 18, 54, 162 et 486 sont affichés dans la plage A1 :A6.

Sub RrogressionGeometrique()
    Range("A1").Value = 2
    Range("A1:A6").DataSeries Rowcol:=xlColumns, Type:=xlGrowth, Step:=3
End Sub

Figure: Progression géométrique dont le pas est 

La macro suivante insère dans la plage E1: E5 d’une séquence de dates, dont les éléments diffèrent d’exactement un mois, soit les valeurs 01.01 .2020, 01.02.2020, 01.03.2020, 01.04.2020, , 01.05.2020.

Sub ProgressionDate()
    Range("E1").Value = "1/01/2020"
    Range("E1:E5").DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
    Date:=xlMonth
End Sub

Figure: Séquence de dates, dont les éléments diffèrent d’un mois

2.2 Remplir automatiquement d’une plage avec des éléments de séquence
La méthode AutoFill de l’objet Range remplit automatiquement une plage de cellule avec les éléments de séquence. La méthode AutoFill diffère de la méthode DataSeries en ce que la plage dans laquelle la progression sera située est explicitement spécifiée. La méthode AutoFill programme l’exécution de la copie de données dans une plage, lorsque l’utilisateur place le pointeur de la souris sur la poignée de recopie de la plage d’origine et la déplace vers le bas et vers la droite, en sélectionnant la plage entière dans laquelle les données d’origine sont transférées. Sa syntaxe est :

expression.AutoFill (Destination, Type)
■ expression est un élément obligatoire qui spécifie la plage à partir de laquelle commencer le remplissage.
■ Destination est un paramètre obligatoire qui définit la plage à remplir. Cette plage doit contenir la plage spécifiée dans expression.
■ Type est un paramètre facultatif indiquant le type de remplissage. Ces constantes (XlAutoFillType) sont: xlFillDefault, xlFillSeries, xlFillCopy, xlFillFormats, xlFillValues, xlFillDays, xlFillWeekdays, xlFillMonths, xlFillYears, xlLinearTrow. La valeur par défaut est le type de remplissage qui correspond le mieux aux données de la plage spécifiée dans expression.
Par exemple, la macro suivante remplit la plage B1: B5 avec les élément d’une progression arithmétique, les deux premiers termes étant 2 et 8, c’est-à-dire ceux les valeurs précédemment entrées dans les cellules B1 et B2.

Sub ProgressionArith()
    Range("B1").Value = 2
    Range("B2").Value = 8
    Range("B1:B2").AutoFill Destination:=Range("B1:B5"), Type:=xlLinearTrend
End Sub

Figure : Progression arithmétique avec la méthode AutoFill

La macro suivante remplit la plage C1: C5 avec les élément d’une progression géometrique, les deux premiers termes étant 1 et 3, c’est-à-dire ceux les valeurs précédemment entrées dans les cellules C1 et C2.

Sub ProgressionGeo()
 Range("C1").Value = 1
 Range("C2").Value = 3
 Range("C1:C2").AutoFill Destination:=Range("C1:C5"), Type:=xlGrowthTrend
End Sub

Figure: Progression géométrique avec la méthode AutoFill

La macro suivante produit dans la plage D1: D5 une séquence de valeurs Ventes 2010, Ventes 2011, Ventes 2012, Ventes 2013 et Ventes 2014  avec un pas de 1, déterminé par la méthode par défaut de AutoFill.

Sub ProgressionAuto()
  Range("D1").Value = "Ventes 2010"
  Range("D1").AutoFill Destination:=Range("D1:D5"), Type:=xlFillSeries
End Sub

Figure : Progression séquentielle avec la méthode AutoFill

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x