[VBA et MacroXL4]: Je trouve cela beau, alors je le partage avec vous

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.

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.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA et MacroXL4]: Je trouve cela beau, alors je le partage avec vous

Re


Où sont tes lunettes Sharky ? ;)

Lis bien les commentaires dans le code VBA.
 

MJ13

XLDnaute Barbatruc
Re : [VBA et MacroXL4]: Je trouve cela beau, alors je le partage avec vous

Bonjour JM, CC

Moi ausi j'aimais bien les macros XL4 :).

Mais ton code sur XL2007 semble ne pas fonctionner :confused:
 

Pièces jointes

  • Test_Delete_ZZZZ_MacroXl4.xls
    41.5 KB · Affichages: 119

laetitia90

XLDnaute Barbatruc
Re : [VBA et MacroXL4]: Je trouve cela beau, alors je le partage avec vous

bonjour tous :):):)
Michel:) je viens de tester sous 2007 chez moi ca marche???

ps correction ca marche pas sous 2007 j'avais teste sous 2003:(:(
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA et MacroXL4]: Je trouve cela beau, alors je le partage avec vous

Bonsoir

Aie!

Bon bah va falloir installer Excel 97 ou 2000 ou 2003 dans une machine virtuelle pour tester ;)

N’empêche que je trouve cela plus simple et rapide que la suppression de lignes par un filtre élaboré en VBA ;)

Voir ci-dessous
Code:
Sub ADV_FIL()
Dim pf As Range
With Range("A1")
With .Resize(26)
    .FormulaArray = "=REPT(CHAR(64+ROW()),4)": .Value = .Value
End With
.EntireRow.Insert: .Offset(-1) = "TEST"
End With
[C1] = "TEST"
[C2] = "<>ZZZZ"
Range("A1:A26").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:=False
Set pf = Range("_FilterDataBase")
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
[C1:C2].Clear
End Sub

ExecuteExcel4Macro "DATA.DELETE()"
C'est plus limpide non ;)
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
667

Statistiques des forums

Discussions
312 338
Messages
2 087 402
Membres
103 536
dernier inscrit
komivi