Comment utiliser la plage et les cellules dans VBA ?
Introduction à la plage et aux cellules dans VBA
Lorsque vous regardez autour de vous dans un classeur Excel, vous constaterez que tout fonctionne autour des cellules. Une cellule et une plage de cellules sont l’endroit où vous stockez vos données, puis tout commence.
Pour tirer le meilleur parti de VBA, vous devez apprendre à utiliser des cellules et des plages dans vos codes. Pour cela, vous devez avoir une solide compréhension des objets Range. En l’utilisant, vous pouvez faire référence aux cellules de vos codes de la manière suivante :
- Une seule cellule.
- Une gamme de cellules
- Une ligne ou une colonne
- Une gamme en trois dimensions
L’OBJET RANGE fait partie de la hiérarchie d’objets d’Excel : Application ➜ Workbooks ➜ Worksheets ➜ Range et d’ailleurs à l’intérieur de la feuille de calcul. Donc, si vous écrivez du code pour faire référence à l’objet RANGE, ce serait comme ceci :
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
En vous référant à une cellule ou à une plage de cellules, vous pouvez effectuer les opérations suivantes :
- Vous pouvez en lire la valeur.
- Vous pouvez y saisir une valeur.
- Et, vous pouvez apporter des modifications au format.
Pour faire toutes ces choses, vous devez apprendre à faire référence à une cellule ou à une plage de cellules, et dans la section suivante de ce didacticiel, vous apprendrez à faire référence à une cellule de différentes manières. Pour faire référence à une cellule ou à une plage de cellules, vous pouvez utiliser trois méthodes différentes.
- Propriété de plage
- Propriété des cellules
- Propriété de décalage
Eh bien, lequel est le meilleur parmi ceux-ci dépend de vos besoins, mais cela vaut la peine d’apprendre les trois afin que vous puissiez choisir celui qui vous convient le mieux.
Alors, commençons.
Propriété de plage
La propriété Range est le moyen le plus courant et le plus populaire de faire référence à une plage dans vos codes VBA. Avec la propriété Range, il vous suffit de vous référer à l’adresse de la cellule. Laissez-moi vous dire la syntaxe.
expression.range(address)
Ici, l’expression est une variable représentant un objet VBA. Donc, si vous devez vous référer à la cellule A1, la ligne de code que vous devez écrire serait :
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Le code ci-dessus indique à VBA que vous faites référence à la cellule A1 qui se trouve dans la feuille de calcul « Sheet1 » et le classeur « Book1 ».
Remarque : Chaque fois que vous saisissez une adresse de cellule dans l’objet de plage, assurez-vous de l’entourer de guillemets doubles. Mais voici une chose à comprendre. Comme vous utilisez VBA dans Excel, il n’est pas nécessaire d’utiliser le mot « Application ». Donc le code serait :
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Et si vous êtes dans Book1, vous pouvez encore réduire votre code :
Worksheets(“Sheet1”).Range(“A1”)
Mais, si vous êtes déjà dans la feuille de calcul « Sheet1 », vous pouvez réduire davantage votre code et ne pouvez utiliser que :
Range(“A1”)
Supposons maintenant que vous souhaitiez faire référence à une plage complète de cellules (c’est-à-dire plusieurs cellules), vous devez écrire le code de la manière suivante :
Range("A1:A5")
Dans le code ci-dessus, vous avez fait référence à la plage A1 à A5 qui se compose de cinq cellules. Vous pouvez également faire référence à une plage nommée à l’aide de l’objet plage. Supposons que vous ayez une plage nommée avec le nom « Sales Discount » pour y faire référence, vous pouvez écrire un code comme celui-ci :
Range("Sales Discount")
Si vous voulez faire référence à une plage non continue, vous devez faire quelque chose comme ceci :
Range("A1:B5,D5:G10")
Et si vous souhaitez faire référence à une ligne entière ou à une colonne, vous devez entrer un code comme celui ci-dessous :
Range("1:1")
Range("A:A")
À ce stade, vous comprenez clairement comment faire référence à une cellule et à la plage de cellules. Mais pour que ce soit le meilleur avec cela, vous devez apprendre à l’utiliser pour faire d’autres choses.
Ici, nous avons une liste complète de tutoriels que vous pouvez utiliser pour apprendre à travailler avec des plages et des cellules dans VBA.
- Compter les lignes à l’aide de VBA dans Excel
- Police Excel VBA (couleur, taille, type et gras)
- Excel VBA Masquer et afficher une colonne ou une ligne
- Appliquer des bordures sur une cellule à l’aide de VBA dans Excel
- Rechercher la dernière ligne, colonne et cellule à l’aide de VBA dans Excel
- Insérer une ligne à l’aide de VBA dans Excel
- Fusionner des cellules dans Excel à l’aide d’un code VBA
- Sélectionnez une plage/cellule à l’aide de VBA dans Excel
- SÉLECTIONNER TOUTES les cellules d’une feuille de calcul à l’aide d’un code VBA
- ActiveCell dans VBA dans Excel
- Méthode des cellules spéciales dans VBA dans Excel
- Propriété UsedRange dans VBA dans Excel
- Ajustement automatique VBA (lignes, colonne ou feuille de calcul entière)
- VBA ClearContents (à partir d’une cellule, d’une plage ou d’une feuille de calcul entière)
- Plage de copie VBA vers une autre feuille + classeur
- VBA Entrez une valeur dans une cellule (Set, Get et Change)
- Colonne d’insertion VBA (simple et multiple)
- Plage nommée VBA | (Statique + de Sélection + Dynamique)
- Décalage de plage VBA
- Plage de tri VBA | (Descendant, plusieurs colonnes, orientation du tri
- VBA Wrap Text (cellule, plage et feuille de calcul entière)
- VBA Vérifier si une cellule est vide + plusieurs cellules
1. Sélectionnez et activez une cellule
Si vous souhaitez sélectionner une cellule, vous pouvez utiliser la plage. Sélectionnez la méthode. Disons que si vous voulez sélectionner la cellule A5, tout ce que vous avez à faire est de spécifier la plage, puis d’ajouter « .Select » après cela.
Range(“A1”).Select
Ce code indique à VBA de sélectionner la cellule A5 et si vous souhaitez sélectionner une plage de cellules, il vous suffit de vous référer à cette plage et d’ajouter simplement « .Select » après cela.
Range(“A1:A5”).Select
Il existe également une autre méthode que vous pouvez utiliser pour activer une cellule.
Range(“A1”).Activate
Ici, vous devez vous rappeler que vous ne pouvez activer qu’une seule cellule à la fois. Même si vous spécifiez une plage avec la méthode « .Activate « , elle sélectionnera cette plage mais la cellule active sera la première cellule de la plage.
2. Entrez une valeur dans une cellule
En utilisant la propriété range, vous pouvez entrer une valeur dans une cellule ou une plage de cellules. Comprenons comment cela fonctionne à l’aide d’un exemple simple :
Range("A1").Value = "Exceladvisor"
Dans l’exemple ci-dessus, vous avez spécifié A1 en tant que plage et après cela, vous avez ajouté » .Value » qui indique à VBA d’accéder à la propriété value de la cellule.
La prochaine chose que vous avez est le signe égal, puis la valeur que vous souhaitez entrer (vous devez utiliser des guillemets doubles si vous entrez une valeur de texte). Pour un nombre, le code serait comme ceci :
Range("A1").Value = 9988
Et si vous voulez entrer une valeur dans une plage de cellules, je veux dire plusieurs cellules, alors tout ce que vous avez à faire est de spécifier cette plage.
Range("A1:A5").Value = "Exceladvisor"
Et voici le code si vous faites référence à la gamme non continue.
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. Copier et coller une cellule/plage
Avec la propriété Range, vous pouvez utiliser la méthode « .Copy » pour copier une cellule, puis la coller dans une cellule de destination. Disons que vous devez copier la cellule A5, le code correspondant serait :
Range("A5").Copy
Lorsque vous exécutez ce code, il copie simplement la cellule A5, mais la prochaine étape consiste à coller cette cellule copiée dans une cellule de destination. Pour cela, vous devez ajouter le mot-clé destination après celui-ci et suivi de la cellule où vous souhaitez le coller. Donc, si vous voulez copier la cellule A1 et ensuite la coller dans la cellule E5, le code serait :
Range("A1").Copy Destination:=Range("E5")
De la même manière, si vous avez affaire à une plage de plusieurs cellules, le code ressemblerait à ceci :
Range("A1:A5").Copy Destination:=Range("E5:E9")
Si vous avez copié une plage de cellules, puis si vous avez mentionné une cellule comme plage de destination, VBA copiera toute la plage copiée à partir de la cellule que vous avez spécifiée comme destination.
Range("A1:A5").Copy Destination:=Range("B1")
Lorsque vous exécutez le code ci-dessus, VBA copie la plage A1: A5 et la colle dans B1: B5 même si vous n’avez mentionné que B1 comme plage de destination.
Astuce : Tout comme la méthode « .Copy », vous pouvez utiliser la méthode « .Cut » pour couper une cellule, puis simplement utiliser une destination pour la coller.
4. Utiliser la propriété Font avec la propriété Range
Avec la propriété range, vous pouvez accéder à la propriété font d’une cellule qui vous aide à modifier tous les paramètres de police. Il y a un total de 18 propriétés différentes pour la police auxquelles vous pouvez accéder. Supposons que vous souhaitiez mettre le texte en gras dans la cellule A1, le code serait :
Range("A1").Font.Bold = True
Ce code indique à VBA d’accéder à la propriété BOLD de la police qui se trouve dans la plage A1 et vous avez défini cette propriété sur TRUE. Maintenant, disons que vous voulez appliquer le barré à la cellule A1, ce code temporel serait :
Comme je l’ai dit, il y a un total de 18 propriétés différentes que vous pouvez utiliser, alors assurez-vous de toutes les vérifier pour voir laquelle vous est utile.
5. Effacer le formatage d’une cellule
En utilisant la méthode « .ClearFormats », vous pouvez supprimer uniquement le format d’une cellule ou d’une plage de cellules. Tout ce que vous avez à faire est d’ajouter « .ClearFormat » après avoir spécifié la plage, comme ci-dessous :
Range("A1").ClearFormats
Lorsque vous exécutez le code ci-dessus, il efface tout le formatage de la cellule A1 et si vous voulez le faire pour une plage entière, vous savez quoi faire, n’est-ce pas ?
Range("A1:A5").ClearFormats
Maintenant, le code ci-dessus supprimera simplement le formatage de la plage A1 à A5.
Propriété des cellules
Outre la propriété RANGE, vous pouvez utiliser la propriété « Cells » pour faire référence à une cellule ou à une plage de cellules dans votre feuille de calcul. Dans la propriété de cellule, au lieu d’utiliser la référence de cellule, vous devez entrer le numéro de colonne et le numéro de ligne de la cellule.
expression.Cells(Row_Number, Column_Number)
Ici, l’expression est un objet VBA et Row_Number est le numéro de ligne de la cellule et Column_Number est la colonne de la cellule. Donc, si vous voulez vous référer à la cellule A5, vous pouvez utiliser le code ci-dessous :
Cells(5,1)
Maintenant, ce code indique à VBA de se référer à la cellule qui se trouve à la ligne numéro cinq et à la colonne numéro un. Comme sa syntaxe l’indique, vous devez entrer le numéro de colonne comme adresse, mais la réalité est que vous pouvez également utiliser l’alphabet de colonne si vous le souhaitez simplement en l’entourant de guillemets doubles.
Le code ci-dessous fera également référence à la cellule A5 :
Cells(5,"A")
Et à VBA pour le sélectionner, ajoutez simplement « .Select » à la fin.
Cells(5,1).Select
Le code ci-dessus sélectionnera la cellule A5 qui se trouve dans la 5ème ligne et dans la première colonne de la feuille de calcul.
Propriété DECALAGE
Si vous voulez bien jouer avec les plages dans VBA, vous devez savoir comment utiliser la propriété OFFSET. Il est utile de faire référence à une cellule qui se trouve à un certain nombre de lignes et de colonnes d’une autre cellule.
Supposons que votre cellule active soit B5 en ce moment et que vous souhaitiez accéder à la cellule qui se trouve à 3 colonnes à droite et 1 ligne vers le bas à partir de B5, vous pouvez effectuer ce DÉCALAGE. Vous trouverez ci-dessous la syntaxe que vous devez utiliser pour le DECALAGE :
expression.Offset (RowOffset, ColumnOffset)
- RowOffset : dans cet argument, vous devez spécifier un nombre qui indiquera à VBA le nombre de lignes que vous souhaitez parcourir. Un nombre positif définit une ligne vers le bas et un nombre négatif définit une ligne vers le haut.
- ColumnOffset : Dans cet argument, vous devez spécifier un nombre qui indiquera à VBA le nombre de colonnes dans lesquelles vous souhaitez naviguer. Un nombre positif définit une colonne à droite et un nombre négatif définit une gauche.
Écrivons un code simple par exemple dont nous avons discuté ci-dessus.
- Tout d’abord, vous devez définir la plage à partir de laquelle vous souhaitez naviguer et ainsi taper le code ci-dessous :
- Après cela, tapez « .Offset » et entrez des parenthèses ouvrantes, comme ci-dessous :
- Ensuite, vous devez entrer le numéro de ligne, puis le numéro de colonne où vous souhaitez naviguer.
- À la fin, vous devez ajouter « .Select » pour indiquer à VBA de sélectionner la cellule dans laquelle vous souhaitez naviguer.
Ainsi, lorsque vous exécutez ce code, il sélectionne la cellule qui est une ligne vers le bas et 3 colonnes à droite de la cellule B5.
Redimensionner une plage à l’aide de OFFSET
OFFSET vous permet non seulement de naviguer vers une cellule, mais vous pouvez également redimensionner davantage la plage. Continuons avec l’exemple ci-dessus.
Range("B5").Offset(1, 3).Select
Le code ci-dessus vous dirige vers la cellule E6, et maintenant disons que vous devez sélectionner la plage de cellules qui se compose des cinq colonnes et des trois lignes de l’E6. Donc, ce que vous devez faire est après avoir utilisé OFFSET, utilisez la propriété resize en ajoutant « .Resize ».
Range("B5").Offset(1, 3).Resize
Vous devez maintenant entrer la taille de la ligne et la taille de la colonne. Tapez une parenthèse de début et entrez le nombre pour définir la taille de la ligne, puis un nombre pour définir la taille de la colonne.
Range("B5").Offset(1, 3).Resize(3,5)
À la fin, ajoutez « .Select » pour indiquer à VBA de sélectionner la plage, et lorsque vous exécutez ce code, il sélectionnera la plage.
Range("B5").Offset(1, 3).Resize(3, 5).Select
Ainsi, lorsque vous exécutez ce code, il sélectionnera la plage E6 à I8.
Range("A1").Font.Strikethrough = True