Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA-Supprimer ligne à condition

6 réponses
Avatar
Sunburn
Bonjour,
je voudrais supprimer, sur la feuille "ALPHA" de mon tableau, toutes les
lignes qui contiennent un chiffre supérieur à 100000 inscrit dans la colonne
C.

Je vous remercie.
Yann

6 réponses

Avatar
FFO
Salut à toi
Je te propose ceci :

Sheets("ALPHA").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If ActiveCell > 100000 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell > 6800 Then
ActiveCell.EntireRow.Delete
End If

Qu'en penses tu ???


Bonjour,
je voudrais supprimer, sur la feuille "ALPHA" de mon tableau, toutes les
lignes qui contiennent un chiffre supérieur à 100000 inscrit dans la colonne
C.

Je vous remercie.
Yann


Avatar
Sunburn
Re,
en fait, là il me supprime beaucoup plus de ligne, et surtout des lignes où
la cellule C est vide ou avec des caractères non-chiffre.
Pour le brider plus, on peut ptèt lui dire de supprimer les lignes où la
cellule C est comprise entre 100000 et 999999.
je vais essayer,

Ou faut-il travailler autrement? :
(En fait, c'est pour supprimer les lignes que j'ai créé avec la macro que tu
m'a aidé la semaine dernière). Donc je sais pas si ça marche de supprimer ce
qu'une macro a créé, même à des dates différentes, après avoir travaillé sur
le fichier et enregistrment successifs (mais sans modifier ce qui avait été
copié-collé par macro), je sais pas. Si oui, ça serait sûrment plus simple.
Merci.
Yann


Salut à toi
Je te propose ceci :

Sheets("ALPHA").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If ActiveCell > 100000 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell > 6800 Then
ActiveCell.EntireRow.Delete
End If

Qu'en penses tu ???


Avatar
FFO
Je pensais que la colonne ne comportait que des chiffres
Essaye donc plutôt ce code :

Sheets("Onglet").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
ActiveCell.EntireRow.Delete
End If

Si malgré tout des cellules vides de la colonne C disparraissent tu peux
remplacer les instructions :
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
par
If ActiveCell<>"" and VarType(ActiveCell.Value) <> vbString And
ActiveCell.Value > 6800 Then
mais me concernant aprés test ce n'est pas utile


Re,
en fait, là il me supprime beaucoup plus de ligne, et surtout des lignes où
la cellule C est vide ou avec des caractères non-chiffre.
Pour le brider plus, on peut ptèt lui dire de supprimer les lignes où la
cellule C est comprise entre 100000 et 999999.
je vais essayer,

Ou faut-il travailler autrement? :
(En fait, c'est pour supprimer les lignes que j'ai créé avec la macro que tu
m'a aidé la semaine dernière). Donc je sais pas si ça marche de supprimer ce
qu'une macro a créé, même à des dates différentes, après avoir travaillé sur
le fichier et enregistrment successifs (mais sans modifier ce qui avait été
copié-collé par macro), je sais pas. Si oui, ça serait sûrment plus simple.
Merci.
Yann


Salut à toi
Je te propose ceci :

Sheets("ALPHA").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If ActiveCell > 100000 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell > 6800 Then
ActiveCell.EntireRow.Delete
End If

Qu'en penses tu ???




Avatar
MichDenis
Un petit exemple en utilisant le filtre automatique.
J'ai supposé que la colonne C avait un en-tête de colonne

'---------------------------------
Sub test()

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom Feuille à adapter
With .Range("C1:C" & .Range("C65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">" & 100000
End With
With .Range("_FilterDatabase")
.Resize(.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1). _
SpecialCells(xlCellTypeVisible) _
.EntireRow.Delete
.AutoFilter
End With
End With
End Sub
'---------------------------------



"Sunburn" a écrit dans le message de news:

Bonjour,
je voudrais supprimer, sur la feuille "ALPHA" de mon tableau, toutes les
lignes qui contiennent un chiffre supérieur à 100000 inscrit dans la colonne
C.

Je vous remercie.
Yann
Avatar
Sunburn
Re,
en fait, j'ai essayer avec ce code et ça marche, mais ce n'est peut être pas
très logique :
---
Sub SUPPRIMEBAL()
Sheets("C").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If ActiveCell > 100000 And ActiveCell < 999999999 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
End Sub
----
j'ai supprimer le deuxième IF car il supprimait la première ligne de ma
feuille.
Merci pour ton aide.
Yann



Je pensais que la colonne ne comportait que des chiffres
Essaye donc plutôt ce code :

Sheets("Onglet").Range("C65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("C1").Address
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
ActiveCell.EntireRow.Delete
End If

Si malgré tout des cellules vides de la colonne C disparraissent tu peux
remplacer les instructions :
If VarType(ActiveCell.Value) <> vbString And ActiveCell.Value > 6800 Then
par
If ActiveCell<>"" and VarType(ActiveCell.Value) <> vbString And
ActiveCell.Value > 6800 Then
mais me concernant aprés test ce n'est pas utile


Avatar
HD
Une suppression de lignes selon des critères et sans boucle !!! ça doit être
bien plus rapide qu'avec boucle...

Excellent cette fonction :-O

--
@+
HD