Excel VBA – Redimensionner une Plage

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Redimensionner une Plage en Utilisant VBA

Ce tutoriel montre comment utiliser la propriété Resize de l’objet Range pour modifier et renvoyer une nouvelle plage redimensionnée à partir de l’objet Range d’origine.

Syntaxe

La syntaxe de la propriété Resize est la suivante

Range("A1").Resize (Nombre_De_Lignes, Nombre_De_Colonnes)

Où Range(« A1 ») est votre plage de départ. Nombre_De_Lignes et Nombre_De_Colonnes doivent être supérieurs à zéro. Chaque entrée est facultative (par exemple, vous pouvez omettre RowSize pour ne modifier que le nombre de colonnes, ou vice-versa).

Redimensionnement du Nombre de Lignes et de Colonnes

L’exemple suivant étend la plage contenant une cellule A1 à la plage A1:D10 en augmentant le nombre de lignes à 10 et le nombre de colonnes à 5.

Range("A1").Resize(10, 5).Select

Ou, plus couramment, vous attribuerez la plage redimensionnée à une variable :

   ' Redimensionnez la plage à la taille souhaitée et affectez-la à une variable
    Set nouvPlage = ActiveSheet.Range("A1").Resize(10, 5)

Redimensionnement du Nombre de Lignes Uniquement

L’exemple suivant modifie uniquement le nombre de lignes :

   ' Modifier uniquement la taille des lignes, la nouvelle plage sera $A$1:$A$10
    Set nouvPlage = rng.Resize(10)

Redimensionnement du Nombre de Colonnes Uniquement

L’exemple suivant modifie uniquement le nombre de colonnes :

   ' Modifie uniquement la taille des colonnes, la nouvelle plage sera $A$1:$E$1
    Set nouvPlage = rng.Resize(, 5)

Redimensionnement d’une Plage de Tableau pour Exclure l’En-Tête

Si vous avez un tableau sur la feuille active avec une ligne d’en-tête, le code sélectionnera d’abord le tableau entier puis descendra d’une ligne pour exclure l’en-tête en utilisant la méthode Range.Offset. Il utilisera ensuite la propriété Range.Resize pour réduire la taille d’une ligne.

Sub SélectionnerDonnéesTableau()
    ' **IMPORTANT**
    ' Cliquez sur une cellule du tableau avant d'exécuter la macro
    
    ' Déplace la plage d'une ligne vers le bas en utilisant Offset, puis réduit sa taille d'une ligne
    Set tbl = ActiveCell.CurrentRegion.Offset(1, 0)
    Set tbl = tbl.Resize(tbl.Rows.Count - 1, tbl.Columns.Count)
     
    ' Les données sont sélectionnées en excluant la ligne d'en-tête
    tbl.Select
End Sub

Ecriture d’un Tableau à 2 Dimensions dans une Plage

Une autre utilisation courante consiste à écrire un tableau à deux dimensions dans une feuille. Comme la plage à écrire doit correspondre à la taille du tableau, qui n’est normalement pas connue à l’avance, la méthode Resize est utilisée pour définir la plage de sortie.

L’exemple ci-dessous va lire les données de la plage A1:E10 dans la feuille active dans un tableau et écrire le tableau dans la feuille ‘Sortie’ en commençant par la cellule A1 :

Sub ÉcrireUnTableau()
    ' Lecture des données dans un tableau
    Données = Range("A1:E10").Value
    ' Redimensionnement de la plage de sortie et écriture du tableau
    Worksheets("Sortie").Range("A1").Resize(UBound(Données, 1), UBound(Données, 2)).Value = Données
End Sub

Écrit par : Vinamra Chandra

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA