Macro suppr de ligne en fction de nombre

DPX

XLDnaute Junior
Bonjour,

Je recherche un macro qui trouve dans la colonne B les valeurs:
inférieure à 54300
entre 5430 et 70000
puis supérieures à 899000

Et qui supprime les lignes correcpondantes.

Une PJ :eek:
 

Pièces jointes

  • macro Suppr.xls
    13.5 KB · Affichages: 32

DPX

XLDnaute Junior
Re : Macro suppr de ligne en fction de nombre

Salut
T'as raison j'ai mal expliqué les critères.

Dans la colonne B, il y a toute une liste de nombre.
Les seuls lignes que je veux garder sont :
Entre 5400 et 5440
Entre 700000 et 899000
Toutes les autres lignes pourront être suppr.
Le vrai fichier par de 0 jusqu'à 59000 lignes.
...
@
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro suppr de ligne en fction de nombre

Bonjour DPX, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dl = .Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne édité  dl de la colonne B
    Set pl = .Range("B2:B" & dl) 'définit la plage pl
    On Error Resume Next 'gestion des erreurs (passe à la ligne suivante si rencontre une erreur)
    .Range("A1").AutoFilter Field:=2, Criteria1:="<54300" 'filtre sur premier critère (valeur<54300)
    pl.SpecialCells(xlCellTypeVisible).EntireRow.Delete 'efface les lignes visible de la plage pl (provoque une erreur si aucune ligne visible)
    If Err <> 0 Then Err = 0 'si une erreur a été générée, annule l'erreur
    .ShowAllData 'affiche toutes les lignes
    .Range("A1").AutoFilter Field:=2, Criteria1:=">5430", Operator:=xlAnd, Criteria2:="<70000" 'filtre sur second critère (5430<valeur>70000)
    pl.SpecialCells(xlCellTypeVisible).EntireRow.Delete 'efface les lignes visible de la plage pl (provoque une erreur si aucune ligne visible)
    If Err <> 0 Then Err = 0 'si une erreur a été générée, annule l'erreur
    .ShowAllData 'affiche toutes les lignes
    .Range("A1").AutoFilter Field:=2, Criteria1:=">899000" 'filtre sur troisième critère (valeur>899000)
    pl.SpecialCells(xlCellTypeVisible).EntireRow.Delete 'efface les lignes visible de la plage pl (provoque une erreur si aucune ligne visible)
    If Err <> 0 Then Err = 0 'si une erreur a été générée, annule l'erreur
    .ShowAllData 'affiche toutes les lignes
    .Range("A1").AutoFilter 'supprime le filtre automatique
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub
Le fichier :
 

Pièces jointes

  • DPX_v01.xls
    29 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro suppr de ligne en fction de nombre

Bonjour DPX, Gorfael, bonjour le forum,

Oui je me doutais aussi d'une blague de ce style ! Le fichier proposé ne tient pas compte de ton changement de cao. tu adapteras....
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro suppr de ligne en fction de nombre

Bonjour le Fil, bonjour le forum,

Peux ton rendre ta macro plus souple en lui attribuant un bouton qui demande quelles sont les valeurs à supprimer?
:rolleyes:


Peux-tu poser la bonne question en début de fil ?....
En pièce jointe la version 2 avec une UserForm :
Dans la TextBox1 tu tapes le critère avec un des tois opérateurs, <>=. Par exemple : >10000 ou =4383 ou <60000. Les lignes correspondant au critère seront supprimées...
 

Pièces jointes

  • DPX_v02.xls
    39 KB · Affichages: 31
  • DPX_v02.xls
    39 KB · Affichages: 43
  • DPX_v02.xls
    39 KB · Affichages: 45
Dernière édition:

Discussions similaires

Réponses
2
Affichages
142
Réponses
21
Affichages
402

Statistiques des forums

Discussions
312 524
Messages
2 089 322
Membres
104 119
dernier inscrit
karbone57