Comment insérer des colonnes en utilisant VBA ?

Dans ce tutoriel, nous verrons comment insérer une colonne à l’aide d’un code VBA dans Excel. Nous explorerons également quelles sont les différentes façons d’écrire une macro pour cela.

Insérer une seule colonne à l’aide de VBA

Pour insérer une colonne à l’aide d’un code VBA, vous devez utiliser la propriété « Colonne entière » avec la méthode « Insérer ». Avec la propriété de colonne entière, vous pouvez faire référence à la colonne entière à l’aide d’une cellule, puis insérer une nouvelle colonne. Par défaut, il insérera une colonne avant la cellule que vous avez mentionnée.

insérer une seule colonne en utilisant vba
  1. Tout d’abord, spécifiez une cellule à l’aide de l’objet range.
  2. Maintenant, entrez un point (.) pour obtenir la liste des propriétés et des méthodes.
  3. Après cela, sélectionnez la propriété « Colonne entière » ou saisissez-la.
  4. À la fin, entrez à nouveau un point (.) et sélectionnez la méthode « Insérer » ou tapez-le.
Range("A1").EntireColumn.Insert

Votre code est prêt ici pour insérer une colonne. Maintenant, lorsque vous exécutez ce code, il insère instantanément une nouvelle colonne avant la colonne A.

Insérer plusieurs colonnes

Il existe deux façons d’insérer plusieurs colonnes dans une feuille de calcul que j’ai trouvée. La première est la même méthode d’insertion que nous avons utilisée dans l’exemple ci-dessus. Avec cela, vous devez spécifier une plage de colonnes dont le nombre est égal au nombre de la colonne que vous souhaitez insérer.

Supposons maintenant que vous souhaitiez insérer 5 colonnes après la colonne C dans le cas où vous pouvez utiliser un code comme celui-ci.

insérer plusieurs colonnes
Range("C:G").EntireColumn.Insert

Pour être honnête, je n’ai pas trouvé cette méthode très utile car vous devez modifier la plage si vous souhaitez modifier le code lui-même. Donc, voici la deuxième méthode.

'variables to use in the code
Dim iCol As Long
Dim iCount As Long
Dim i As Long

'to get the number of columns that you want to insert with an input box
iCount = InputBox(Prompt:="How many column you want to add?")

'to get the column number where you want to insert the new column
iCol = InputBox _
(Prompt:= _
"After which column you want to add new column? (Enter the column number)")

'loop to insert new column(s)
For i = 1 To iCount
    Columns(iCol).EntireColumn.Insert
Next i

Lorsque vous exécutez ce code, il vous demande d’entrer le nombre de colonnes que vous souhaitez ajouter, puis le numéro de colonne où vous souhaitez ajouter toutes ces nouvelles colonnes. Il utilise une boucle FOR (For Next) pour entrer le nombre de colonnes que vous avez mentionné.

Insérer des colonnes en fonction des valeurs de cellule

Si vous souhaitez insérer des colonnes en fonction d’une valeur de cellule, vous pouvez utiliser le code suivant.

Dim iCol As Long
Dim iCount As Long
Dim i As Long

iCount = Range("A1").Value
iCol = Range("B1").Value

For i = 1 To iCount
    Columns(iCol).EntireColumn.Insert
Next i

Lorsque vous exécutez cette macro, elle prend le nombre de colonnes de la cellule A1 et la colonne dans laquelle vous souhaitez ajouter des colonnes de la cellule B1.

Insérer une colonne sans formatage

Lorsque vous insérez une colonne où la colonne ci-dessus a une mise en forme spécifique, dans ce cas, la colonne aura également cette mise en forme automatiquement. Et la façon la plus simple de gérer cette situation est d’utiliser des formats clairs. Considérez le code suivant.

Columns(7).EntireColumn.Insert
Columns(7).ClearFormats

Lorsque vous exécutez le code ci-dessus, il insère une nouvelle colonne avant la 7 ème colonne. Maintenant, ce qui se passe, c’est que lorsque vous insérez une colonne avant la 7 ème colonne, cette nouvelle colonne devient la 7 ème colonne, puis la deuxième ligne de code en efface les formats.

Insérer une colonne copiée

Vous pouvez également utiliser la même méthode pour copier une colonne, puis l’insérer ailleurs. Voir le code suivant.

Application.CutCopyMode = False

With Worksheets("Data")
.Columns(5).Copy
.Columns(9).Insert Shift:=xlShiftDown
End With

Application.CutCopyMode = True

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *