VBA – suppression de lignes en fonction de cellules contenant des mots spécifiques + ajout de lignes en fonction de la valeur de la cellule

Ce que j'essaie de faire:

Exportation de documents excel de Salesforce. J'essaie de supprimer certaines lignes en fonction d'une condition, puis d'append des lignes en fonction d'un set de conditions différentes. Étant nouveau pour VBA, j'ai navigué sur les forums et j'ai goûté à certains exemples de codes, mais je ne peux pas les faire fonctionner pleinement.

Ajout de lignes:

Colonne C = Quantité. Vous devez append des lignes ci-dessous en fonction de la valeur de la colonne C. Si quantité = 3 – je souhaite append 2 lignes vierges ci-dessous. Si quantité = 4 – 3 lignes vides ci-dessous …

A essayé:

Sub BlankLine() Dim Col As Variant Dim BlankRows As Long Dim LastRow As Long Dim R As Long Dim StartRow As Long Col = "C" StartRow = 15 BlankRows = 1 LastRow = Cells(Rows.Count, Col).End(xlUp).Row Application.ScreenUpdating = False With ActiveSheet For R = LastRow To StartRow + 1 Step -1 If .Cells(R, Col) > 1 Then .Cells(R + 1, Col).EntireRow.Insert Shift:=xlDown End If Next R End With Application.ScreenUpdating = True End Sub 

Cela fonctionne, mais n'ajoute qu'une seule ligne ci-dessous: j'ai besoin d'append des lignes en fonction de la valeur de la colonne C = 'quantité'.

Suppression de lignes:

Colonne A = Nom du produit. Si un nom de produit contient MAINT ou APP, je dois supprimer cette ligne. A essayé:

 Sub test() With ActiveSheet .AutoFilterMode = False With Range("A1", Range("A" & Rows.Count).End(xlUp)) .AutoFilter 1, "*Maint*" On Error Resume Next .Offset(1).SpecialCells(12).EntireRow.Delete End With .AutoFilterMode = False End With End Sub 

Cela fonctionne également, mais supprime la rangée supérieure une fois terminé, donc je perds des informations.

Toute suggestion sur comment aborder cela est grandement appréciée!

En ce qui concerne l'insertion de lignes

 For R = LastRow To StartRow + 1 Step -1 With .Cells(R, Col) If .Value > 1 Then .Offset(1).Resize(.Value).EntireRow.Insert End With Next R 

Tout en filtrant et en supprimant

 Sub test() With ActiveSheet .AutoFilterMode = False With .Range("A1", .Range("A" & .Rows.Count).End(xlUp)) .AutoFilter Field:=1, Criteria1:=Array("*Maint*", "*APP*"), Operator:=xlFilterValues If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .Offset(1).Resize(.Rows.Count -1).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With .AutoFilterMode = False End With End Sub 
 If .Cells(R, Col) > 1 Then numRows = val(.Cells(R, Col)) - 1 For i = 1 to numRows .Cells(R + 1, Col).EntireRow.Insert Shift:=xlDown Next i End If