suppression de lignes

O

Osella

Guest
Bonjour,

le but de ma macro est simple:

faire un filtre sur la colonne AB
selectionner les valeurs "0,00"
supprimer les lignes correspondantes

Je débute dans les macros.
Si quelqu'un pouvait m'aider, je lui en serai très reconnaissant.

Merci d'avance

Osella
 

Pièces jointes

  • test.zip
    11.6 KB · Affichages: 30
  • test.zip
    11.6 KB · Affichages: 28
  • test.zip
    11.6 KB · Affichages: 32
H

Hervé

Guest
Bonjour

A placer dans un module standard :

Public Sub vev()
Dim i As Integer
For i = Range("ab65536").End(xlUp).Row To 2 Step -1
If Range("ab" & i) = 0 Then Rows(i).Delete
Next i
End Sub

Apparement ta macro9 était bonne.

Salut
Hervé
 
O

Osella

Guest
Salut Hervé

il est clair que ça marche très bien. Mais c'est très lent.
Ce que je veux automatiser représente ceci quand je ne fais pas de macro:

je fais un filtre sur la ligne 1
puis je sélectionne la valeur "0,00" dans la colonne AB
je sélectionne ensuite les cellules visibles
puis "Ctrl - "


ça prend maxi 1à 2 min

Merci d'avance de ton aide

Osella
 
B

Bertrand Dallem

Guest
Bonjour Osella,
Tout le forum et tous ceux qui se dévouent ...

Pourquoi ne pas faire plus simplement :
1. un tri décroissant de tes données sur la colonne AB
2. rechercher la 1ère valeur = 0 dans cette colonne
3. effacer à partir de cette ligne jusqu'au bas de la feuille

@+
Bertrand
 
O

Osella

Guest
Bonjour Bertrand,

Je trouve ta méthode vraiment pas mal.
Mais j'ai un tout petit souci, je ne sais pas comment écrire en langage macro "rechercher la 1ere valeur = 0 dans la colonne AB"

Y'aurait-il déjà eu des messages à ce sujet?


Merci d'avance

Osella
 
H

Hervé

Guest
bonjour

je ne t'avais pas oublié osella, et cherchais en vain à traduire en macro ton sytème de filtre, mais l'idée de bertrand est pas mal.

voila la traduction de l'idée de bertrand en vba appliqué à ton tableau :

Public Sub vev()
Columns("A:AB").Sort Key1:=Range("AB1"), Order1:=xlDescending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers

Set cellule = Columns("AB").Find(What:="0", LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Range(cellule.Address(0, 0), Range("ab65536")).EntireRow.Delete
End Sub


Pour ceci j'ai utilisé l'enregistreur de macro.

Salut
Hervé
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa