Staple1600
XLDnaute Barbatruc
Bonjour à tous
Au détour des mes pérégrinations sur le Web, je suis tombé en pamoison devant cette façon de faire pour supprimer des lignes selon critère.
Alors voici pour ceux que cela ravira (comme moi)
A tester sur un classeur vierge.
C'est chouette, non ? Cela évite d'utiliser un filtre élaboré.
PS: Si vous avez d'autres exemples d'emploi de ExecuteExcel4Macro, n'hésitez pas à en faire part.
Au détour des mes pérégrinations sur le Web, je suis tombé en pamoison devant cette façon de faire pour supprimer des lignes selon critère.
Alors voici pour ceux que cela ravira (comme moi)
A tester sur un classeur vierge.
VB:
Sub Toujours_Cool_MacroXL4()
Dim rngAll As Range, rngCriteria As Range
'/// J'ai ajouté ceci juste pour générer des données de test
' c'est qui suit plus bas que j'adore ;)
With Range("A1")
With .Resize(26)
.FormulaArray = "=REPT(CHAR(64+ROW()),4)": .Value = .Value
End With
.EntireRow.Insert: .Offset(-1) = "TEST"
End With
'//// fin création données test
MsgBox "Pause" & Chr(13) & "Les lignes différentes de ZZZZ seront supprimées" & Chr(13) & Chr(13) & "D'une façon que je trouve cool, et vous ?", vbExclamation, "Longue vie au macro XL4 dans VBA"
Application.ScreenUpdating = False
'adapté d'un code de Hans W. Herber
Set rngAll = Range("A1").CurrentRegion
With rngAll
.Name = "DataBase"
Set rngCriteria = _
.Item(1).Offset(, 2).Resize(2, 1)
End With
With rngCriteria
.Name = "Criteria"
.Cells(1, 1).Value = "TEST"
.Cells(2, 1) = "<>ZZZZ"
ExecuteExcel4Macro "DATA.DELETE()"
.Clear
End With
Application.ScreenUpdating = True
End Sub
C'est chouette, non ? Cela évite d'utiliser un filtre élaboré.
PS: Si vous avez d'autres exemples d'emploi de ExecuteExcel4Macro, n'hésitez pas à en faire part.