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