Enregistrement macro VS macro écrite manuellement

Salut à tous,

Comme tout bon débutant (sic) on enregistre quelques macros et après on va décortiquer petit à petit les formules que Excel nous a pondu. On se rend vite compte que l'écriture est parfois un peu de trop un qu'un bon nettoyage s'impose.

oui comme je suis débutant, j'ai enregistré une macro. En gros : "Si telle valeur dans une telle case, supprimer la ligne". J'ai enregistré cette macro alors que j'utilisais un filtre en Excel.

Voici donc un exemple du résultat que VB m'a enregistré :

ActiveSheet.Range("$A$1:$AH$250001").AutoFilter Field:=10, Criteria1:=Array _
        ("000", "AG", "CAD", "CAN", "MDB", "MP", "PD"), Operator:=xlFilterValues
    ActiveWindow.SmallScroll Down:=-18
    Rows("187:187").Select
    ActiveWindow.ScrollRow = 484
    ActiveWindow.ScrollRow = 806
    ActiveWindow.ScrollRow = 2901
ActiveWindow.SmallScroll Down:=6
    Rows("187:107665").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$AH$247846").AutoFilter Field:=10

Cela fonctionne, mais pas joli, joli.

Comment me conseilleriez vous de réécrire cette formule de manière plus propre ?

Merci !

Bien à vous

Bonjour

A essayer :

With ActiveSheet
.Range("$A$1:$AH$1").AutoFilter Field:=10, Criteria1:=Array _
        ("000", "AG", "CAD", "CAN", "MDB", "MP", "PD"), Operator:=xlFilterValues
.Rows("187:107665").Delete Shift:=xlUp
.Range("$A$1:$AH$1").AutoFilter Field:=10
End With

Reste à comprendre pourquoi tu pars de la ligne 187 à 107665 pour la suppression...

Sinon peut être essayer ceci

Dim dlg as long
With ActiveSheet
.Range("$A$1:$AH$1").AutoFilter Field:=10, Criteria1:=Array _
        ("000", "AG", "CAD", "CAN", "MDB", "MP", "PD"), Operator:=xlFilterValues
dlg = .UsedRange.End(xlDown).Row
.Rows("2:" & dlg).Delete Shift:=xlUp
.Range("$A$1:$AH$1").AutoFilter Field:=10
End With

Si ok, clique sur le V vert à coté du bouton EDITER pour cloturer le fil lorsde ta réponse

Crdlt

Ok ca fonctionne super bien

Reste à comprendre pourquoi tu pars de la ligne 187 à 107665 pour la suppression...

la macro a enregistré mon filtre, et les données se trouvaient entre ces lignes là.

J'opte donc pour ta 2è solution.

Merci beaucoup pour ton aide !

Bàt

Rechercher des sujets similaires à "enregistrement macro ecrite manuellement"