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