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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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