Do until.. pour un nombre de lignes limitées.

Résolu
Jefman007 Messages postés 18 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je veux faire une macro qui supprimera une ligne dont une des cellule comportera la mention "Annulé (avec pondération)". Trouver la ligne et la supprimer n'est pas un problème, j'y suis arrivé avec ceci:

Sub Macro1()
'
' Supprimer entrée:  annulée avec pondération
    
    Sheets("Extract").Select
    Range("D1").Select
    
    Do Until ActiveCell.Value = "Annulé (avec pondération)"
    ActiveCell.Offset(1, 0).Select
    Loop

    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp

End Sub


Cependant, s'il arrive que je n'ai pas de cellule avec cette mention, donc la macro telle quel va rouler à l'infinie...

C'est possible de la limiter à un nombre "X" de ligne ?

Exemple: après 15 lignes, arrêter le loop.

Merci d'avance !

3 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

Tu peux ne pas utiliser une boucle pour supprimer la ligne


Option Explicit
'-------
Sub Macro1()
Dim Lig As Integer
' Supprimer entrée: annulée avec pondération
With Sheets("extract")
On Error GoTo vide
Lig = .Columns("D").Find("Annulé (avec pondération)", .Range("D1"), xlValues).Row
Rows(Lig).Delete
End With
Exit Sub
vide:
MsgBox "la mention ""Annulé (avec pondération)"" inconnue dans colonne D"
End Sub
1
via55 Messages postés 14730 Statut Membre 2 750
 
Bonsoir

Modifies seulement ainsi ces lignes :

Do Until ActiveCell.Value = "Annulé" Or x = 15
ActiveCell.Offset(1, 0).Select
x = x + 1
Loop

Cdlmnt
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
Bonjour,

Et pourquoi boucler pour chercher une valeur?

Tu peux, si tu le désires, utiliser la méthode Find. Comme cela, trouvé ou pas, tu n'as pas besoin de boucler sur X lignes...

0