Supprimer des lignes ?

DJ FA

XLDnaute Occasionnel
Bonjour, j'aimerais avec une macro qu'elle me supprime les lignes contenant les valeurs : Paris et Vincennes.
 

Pièces jointes

  • Classeur1.xls
    50 KB · Affichages: 50
  • Classeur1.xls
    50 KB · Affichages: 50
  • Classeur1.xls
    50 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : Supprimer des lignes ?

Bonsoir DJ FA,

Cette macro est très rapide car elle utilise des tableaux :

Code:
Sub SupprimerLignes()
Dim plage As Range, t, ncol%, rest(), i&, n&, j%
Set plage = ActiveSheet.UsedRange
If plage.Count = 1 Then Exit Sub 'sécurité
t = plage 'matrice, plus rapide
ncol = UBound(t, 2)
ReDim rest(1 To UBound(t), 1 To ncol)
For i = 1 To UBound(t)
 If InStr(LCase(t(i, 1)), "paris") + InStr(LCase(t(i, 1)), "vincennes") = 0 Then
   n = n + 1
   For j = 1 To ncol
     rest(n, j) = t(i, j)
   Next
 End If
Next
plage = rest
End Sub
Edit : bien sûr c'est fait pour des bases de données importantes.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Supprimer des lignes ?

Bonjour DJ FA, Gareth, le forum,

Avec les tableaux :

Code:
Option Explicit
Option Base 1 'la numérotation des tableaux commence à 1
Option Compare Text 'la casse est ignorée 'facultatif

Sub SupprimerLignes()
Dim a, ub%, plage As Range, t, ncol%, rest(), i&, j%, n&
a = Array("paris", "vincennes")
ub = UBound(a)
Set plage = ActiveSheet.UsedRange
If plage.Count = 1 Then Exit Sub 'sécurité
t = plage 'matrice, plus rapide
ncol = UBound(t, 2)
ReDim rest(UBound(t), ncol)
For i = 1 To UBound(t)
  For j = 1 To ub
    If InStr(t(i, 1), a(j)) Then GoTo 1
  Next
  n = n + 1
  For j = 1 To ncol
    rest(n, j) = t(i, j)
  Next
1 Next
plage = rest
End Sub
Option Compare Text fait gagner un peu de temps.

A+
 

Discussions similaires

Réponses
6
Affichages
173

Statistiques des forums

Discussions
312 550
Messages
2 089 523
Membres
104 202
dernier inscrit
khaledscenic