Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans
la colonne A.
Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne,
filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple
J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each
n'est plus d'actualité.
Sub Test()
Range("A1").CurrentRegion.Select
With Selection.CurrentRegion
Intersect(.Cells, .Offset(1)).Select
End With
For Each Cell In Selection
If Left(Cell.Value, 2) = "99" Then
NoLgn = Cell.Row
Cell.Offset(0, 1) = "A sup"
' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd
le fil
Else
End If
Next Cell
End Sub
Il faut que tu privilégies le filtre automatique, car même en sachant des macros rapidement, ce sera la méthode la plus pratique.
Sinon, tu peux faire If ActiveCell = 99 Then ActiveCell.EntireRow.Select Selection.delete shift:=xlup Else: ActiveCell.Offset(1, 0).Select End If
si tu mets ctrl + m par exemple pour mettre en route la macro, reste appuyé dessus jusqu'au bout du tableau et voilà
MichDenis
Il y a ceci :
Attention si le contenu de tes cellules est numérique utilise ceci comme critère : Criteria1:=">=" & 99
'------------------------------- Sub Test() With Worksheets("Feuil1") ' Nom de la feuille à déterminer With Range("A1").CurrentRegion .AutoFilter field:=1, Criteria1:="99*" .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilter End With End With End Sub '-------------------------------
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans la colonne A. Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne, filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each n'est plus d'actualité.
Sub Test() Range("A1").CurrentRegion.Select With Selection.CurrentRegion Intersect(.Cells, .Offset(1)).Select End With For Each Cell In Selection If Left(Cell.Value, 2) = "99" Then NoLgn = Cell.Row Cell.Offset(0, 1) = "A sup" ' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd le fil Else End If Next Cell End Sub
D'avance merci
Il y a ceci :
Attention si le contenu de tes cellules est numérique
utilise ceci comme critère : Criteria1:=">=" & 99
'-------------------------------
Sub Test()
With Worksheets("Feuil1") ' Nom de la feuille à déterminer
With Range("A1").CurrentRegion
.AutoFilter field:=1, Criteria1:="99*"
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
End With
End Sub
'-------------------------------
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
uWg8JjwOHHA.1240@TK2MSFTNGP03.phx.gbl...
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans
la colonne A.
Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne,
filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple
J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each
n'est plus d'actualité.
Sub Test()
Range("A1").CurrentRegion.Select
With Selection.CurrentRegion
Intersect(.Cells, .Offset(1)).Select
End With
For Each Cell In Selection
If Left(Cell.Value, 2) = "99" Then
NoLgn = Cell.Row
Cell.Offset(0, 1) = "A sup"
' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd
le fil
Else
End If
Next Cell
End Sub
Attention si le contenu de tes cellules est numérique utilise ceci comme critère : Criteria1:=">=" & 99
'------------------------------- Sub Test() With Worksheets("Feuil1") ' Nom de la feuille à déterminer With Range("A1").CurrentRegion .AutoFilter field:=1, Criteria1:="99*" .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilter End With End With End Sub '-------------------------------
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans la colonne A. Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne, filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each n'est plus d'actualité.
Sub Test() Range("A1").CurrentRegion.Select With Selection.CurrentRegion Intersect(.Cells, .Offset(1)).Select End With For Each Cell In Selection If Left(Cell.Value, 2) = "99" Then NoLgn = Cell.Row Cell.Offset(0, 1) = "A sup" ' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd le fil Else End If Next Cell End Sub
D'avance merci
Daniel
Bonjour. Si tu ne veux pas de filtre, essaie :
Sub test() Dim c As Range, x As Range Set c = Range("A:A").Find("99*", , , xlWhole) Do While Not c Is Nothing c.EntireRow.Delete Set c = Range("A:A").Find("99*", , , xlWhole) Loop End Sub
Cordialement. Daniel
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans la colonne A. Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne, filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each n'est plus d'actualité.
Sub Test() Range("A1").CurrentRegion.Select With Selection.CurrentRegion Intersect(.Cells, .Offset(1)).Select End With For Each Cell In Selection If Left(Cell.Value, 2) = "99" Then NoLgn = Cell.Row Cell.Offset(0, 1) = "A sup" ' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd le fil Else End If Next Cell End Sub
D'avance merci
Bonjour.
Si tu ne veux pas de filtre, essaie :
Sub test()
Dim c As Range, x As Range
Set c = Range("A:A").Find("99*", , , xlWhole)
Do While Not c Is Nothing
c.EntireRow.Delete
Set c = Range("A:A").Find("99*", , , xlWhole)
Loop
End Sub
Cordialement.
Daniel
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
uWg8JjwOHHA.1240@TK2MSFTNGP03.phx.gbl...
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans
la colonne A.
Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne,
filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple
J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each
n'est plus d'actualité.
Sub Test()
Range("A1").CurrentRegion.Select
With Selection.CurrentRegion
Intersect(.Cells, .Offset(1)).Select
End With
For Each Cell In Selection
If Left(Cell.Value, 2) = "99" Then
NoLgn = Cell.Row
Cell.Offset(0, 1) = "A sup"
' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG
perd le fil
Else
End If
Next Cell
End Sub
Sub test() Dim c As Range, x As Range Set c = Range("A:A").Find("99*", , , xlWhole) Do While Not c Is Nothing c.EntireRow.Delete Set c = Range("A:A").Find("99*", , , xlWhole) Loop End Sub
Cordialement. Daniel
"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
Bonjour,
Je souhaite supprimer des lignes pour lesquelles la valeur est de 99* dans la colonne A. Je peux par exemple mettre par VBA un libellé "A sup" dans une colonne, filtrer les " A sup" puis supprimer ces lignes.
Peut-être exite t'il une solution + simple J'ai commencé par ce code mais dès qu'il suprime une ligne, le For each n'est plus d'actualité.
Sub Test() Range("A1").CurrentRegion.Select With Selection.CurrentRegion Intersect(.Cells, .Offset(1)).Select End With For Each Cell In Selection If Left(Cell.Value, 2) = "99" Then NoLgn = Cell.Row Cell.Offset(0, 1) = "A sup" ' Rows(NoLgn & ":" & NoLgn).Select ----> C'est ici que le PG perd le fil Else End If Next Cell End Sub