VBA Excel : Sélectionner toutes et que les lignes visibles d'une zone filtrée?

Le
Jean-Marc
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B :

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première ligne
sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche que
si la première ligne est sélectionnée, sinon j'efface des lignes bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses

Cdt

Jean-Marc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #17359291
Bonsoir;

sais-tu que le select n'est pas nécessaire?

Sub virBtruc()

Dim i As Long
Application.ScreenUpdating = False
For i = [a65536].End(xlUp).Row To 3 Step -1
If UCase(Left(Cells(i, 1), 1)) = "B" Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph


Jean-Marc a écrit :
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B :

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première ligne
sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche que
si la première ligne est sélectionnée, sinon j'efface des lignes bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses

Cdt

Jean-Marc




StDonat
Le #17359431
Bonsoir
En effet en vba cela ne fonctionne pas ainsi
essaye cela
Function premiere_ligne()
With ActiveSheet.AutoFilter.Range.Columns(3)
adr = .Cells(3).Address
Set C = .Columns(3).Find("*")
End With
premiere_ligne = C.Row
End Function

"Jean-Marc" wrote:

Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B :

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première ligne
sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche que
si la première ligne est sélectionnée, sinon j'efface des lignes bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses

Cdt

Jean-Marc





Jean-Marc
Le #17359421
Merci beaucoup Steph,
Cela marche, mais j'ai une dizaine de critères.
Cela fait 10 boucles
Alors même avec le ScreenUpdating = False, cela prends du temps
Il n'y a pas un moyen de ne sélectionner que les cellules visibles?

Cdt
Jean-Marc
"LSteph"
Bonsoir;

sais-tu que le select n'est pas nécessaire?

Sub virBtruc()

Dim i As Long
Application.ScreenUpdating = False
For i = [a65536].End(xlUp).Row To 3 Step -1
If UCase(Left(Cells(i, 1), 1)) = "B" Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph


Jean-Marc a écrit :
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux
supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B
:

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première
ligne sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche
que si la première ligne est sélectionnée, sinon j'efface des lignes
bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses
Cdt
Jean-Marc




LSteph
Le #17359561
Range("a4",[a65536].End(xlUp).Address).SpecialCells(xlCellTypeVisible).EntireRow.Delete

Jean-Marc a écrit :
Merci beaucoup Steph,
Cela marche, mais j'ai une dizaine de critères.
Cela fait 10 boucles
Alors même avec le ScreenUpdating = False, cela prends du temps
Il n'y a pas un moyen de ne sélectionner que les cellules visibles?

Cdt
Jean-Marc
"LSteph"
Bonsoir;

sais-tu que le select n'est pas nécessaire?

Sub virBtruc()

Dim i As Long
Application.ScreenUpdating = False
For i = [a65536].End(xlUp).Row To 3 Step -1
If UCase(Left(Cells(i, 1), 1)) = "B" Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph


Jean-Marc a écrit :
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux
supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B
:

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première
ligne sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche
que si la première ligne est sélectionnée, sinon j'efface des lignes
bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses
Cdt
Jean-Marc








Jean-Marc
Le #17359641
Super,

Merci à Steph et à StDonat pour vos réponses
Comme quoi, plusieurs manières pour arriver au résultat
J Marc

"LSteph"

Range("a4",[a65536].End(xlUp).Address).SpecialCells(xlCellTypeVisible).EntireRow.Delete




Jean-Marc a écrit :
Merci beaucoup Steph,
Cela marche, mais j'ai une dizaine de critères.
Cela fait 10 boucles
Alors même avec le ScreenUpdating = False, cela prends du temps
Il n'y a pas un moyen de ne sélectionner que les cellules visibles?

Cdt
Jean-Marc
"LSteph"
Bonsoir;

sais-tu que le select n'est pas nécessaire?

Sub virBtruc()

Dim i As Long
Application.ScreenUpdating = False
For i = [a65536].End(xlUp).Row To 3 Step -1
If UCase(Left(Cells(i, 1), 1)) = "B" Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph


Jean-Marc a écrit :
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux
supprimer

Exemple : je veux supprimer toutes les références qui commencent par un
B :

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première
ligne sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne
marche que si la première ligne est sélectionnée, sinon j'efface des
lignes bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses
Cdt
Jean-Marc









Hervé
Le #17361441
Bonjour à toutes et tous,
Une de plus et assez rapide, à tester.
Le critère est inscrit en cellule B1 (à modifier si nécessaire), un bouton
issus de la barre formulaire et posé sur la feuille facilite la manoeuvre.

Sub Supprimer()
Dim Plage As Range
Dim Cellule As Range
Dim Precedante As Range
Dim Adresse As String

'adapter le nom de la feuille et la plage
'ici colonne A
With Worksheets("Feuil1")
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
End With
'changer B1 (laisser les 2 "[]") si l'adresse
'de la cellule contenant le critère est autre
Set Cellule = Plage.Find([B1], , xlValues)
If Not Cellule Is Nothing Then
Adresse = Cellule.Offset(-1, 0).Address
On Error Resume Next
Do
Set Precedante = Cellule.Offset(-1, 0)
Cellule.EntireRow.Delete
Set Cellule = Plage.FindNext(Precedante)
Loop While Cellule.Address <> Adresse
End If

Set Plage = Nothing
Set Cellule = Nothing
Set Precedante = Nothing
End Sub

Hervé.

"Jean-Marc" news: 48de9ffa$0$871$
Bonsoir,

en VBA (Excel 2003)
je filtre une zone, puis sélectionne toutes les lignes que je veux
supprimer

Exemple : je veux supprimer toutes les références qui commencent par un B
:

Selection.AutoFilter Field:=1, Criteria1:="=B*"
Range("A3").Select ' ligne des entetes de colonne

puis, et c'est là mon problème, je veux me positionner sur la première
ligne sélectionnée

ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select ' ne marche
que si la première ligne est sélectionnée, sinon j'efface des lignes
bonnes

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Merci d'avance pour vos réponses

Cdt

Jean-Marc



Publicité
Poster une réponse
Anonyme