Comment créer une plage nommée en utilisant VBA ?
Pour créer une plage nommée à l’aide de VBA, vous devez utiliser la propriété « Names » plus loin avec la méthode « Add ». Dans la méthode add, vous avez des arguments pour définir le nom que vous souhaitez donner à la plage et spécifier l’adresse de la plage (assurez-vous d’utiliser le signe dollar avec l’adresse pour figer la plage).
Créer une plage de noms à l’aide de VBA
- Définissez le classeur dans lequel vous souhaitez créer la plage nommée.
- Utilisez la propriété names, puis ajoutez une méthode supplémentaire.
- Spécifiez le nom dans l’argument « Nom ».
- Reportez-vous à la plage à l’aide de l’argument « ReferTo ».
Dans l’exemple ci-dessus, vous avez le classeur actif, puis en utilisant la propriété « Names » avec la méthode « Add » vous avez défini le nom de la plage, et à la fin, l’adresse de la plage que vous souhaitez utiliser .
Comme je l’ai dit plus tôt, dans l’adresse de plage, vous devez utiliser le signe $ pour geler l’adresse. Vous pouvez également utiliser ThisWorkbook pour faire référence au classeur dans lequel vous écrivez le code ou vous pouvez utiliser faire référence à un autre classeur à l’aide de l’objet classeur.
VBA pour créer une plage nommée à partir de la sélection
Vous pouvez également utiliser la propriété selection pour créer une plage nommée à partir de la sélection. Considérez le code suivant.
ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection
Et dans le code suivant, vous avez une boîte de message avec laquelle vous pouvez entrer le nom que vous souhaitez donner à la plage nommée.
Sub vba_named_range()
Dim iName As String
iName = InputBox("Enter Name for the Selection.")
ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection
End Sub
Redimensionner une plage nommée à l’aide de VBA (Dynamic Named Range)
Pour redimensionner une plage nommée déjà présente dans la feuille de calcul, vous devez utiliser la propriété resize et indiquer à VBA le nombre de lignes et de colonnes que vous souhaitez développer à partir de la plage actuelle. Considérez le code suivant qui développe la plage nommée « myRange » qui a initialement la cellule A1 comme plage mais la redimensionne à la colonne M et à la ligne 11.
Sub vba_named_range()
Dim iRow As Long
Dim iColumn As Long
iRow = ActiveSheet.Range("A1").End(xlDown).Row
iColumn = ActiveSheet.Range("A1").End(xlToRight).Column
ActiveSheet.Range("myRange") _
.Resize(iRow, iColumn).Name = "myRange"
End Sub
J’ai divisé cela en trois parties pour vous faire comprendre cela, maintenant, allons-y.
- Dans la PREMIÈRE partie, vous avez des variables déclarées pour stocker les lignes et le nombre de colonnes.
- Dans la DEUXIÈME partie, vous avez utilisé la méthode « END » avec la plage pour obtenir la dernière ligne et colonne et la stocker pour les variables.
- Dans la TROISIÈME partie, vous avez utilisé la propriété Resize avec la plage nommée « myRange ». Et après cela, le numéro de ligne et de colonne que vous avez dans les variables.
Lorsque vous exécutez ce code, il redimensionne l’ancienne plage en fonction des données dont vous disposez et en fait une plage nommée dynamique. Chaque fois que vous avez besoin de le mettre à jour, vous pouvez exécuter le code et redimensionner la plage nommée existante.