[VB Excel] Suppression de ligne sur critère

Résolu
Bonjour,
Je souhaiterais intégrer une fonction de tri/extraction dans une macro Excel :
. le programme irait tester la valeur d'une cellule
. si cette valeur est différente de celle souhaitée, la ligne est supprimée
Comment pourrai-je faire pour programmer une boucle itérative de la ligne x à la ligne y ?

D'avance un grand merci !

Laz
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. bonjour lalence,

    je te propose non pas une fonction, mais une procédure :
    Public Sub KillLigne(Valeur As String, Colonne As Integer, FirstLine As Long, LastLine As Long)
         ' Valeur      : valeur à comparer au contenu de la cellule
         ' Colonne    : colonne où se trouve la valeur à vérifier
         ' FirstLine  : première ligne à vérifier
         ' LastLine   : dernière ligne à vérifier
       
         Dim lngL As Long
         
         Application.ScreenUpdate = False
         Application.DisplayAlerts = False
         For lngL = LastLine To FirstLine Step -1
              If Cells(lngL, Colonne).Value <> Valeur Then
                   Rows(lngL).Delete Shift:=xlShiftUp
              End If
         Next lngL
         Application.DisplayAlerts = True
         Application.ScreenUpdate = True
    End Sub

    je ne l'ai pas testé, vu que je n'ai plus Excel (je suis passé à OpenOffice), mais ça devrait marcher, et en tout cas, te donner des pistes pour faire la fonction/procédure dont tu as besoin.
    4
    1. Bonjour Kobaya,

      Je désirerai créer une macro relativement similaire qui supprimerait la ligne si celle-ci comporte une cellule dans laquelle il est écrit "mauvais"

      Voici mon fichier:

      https://www.cjoint.com/?fngEtEKFMi

      Voici comment j'ai addapté la macro que tu as proposé à lalence:

      Public Sub KillLigne(Valeur As String, Colonne As Integer, FirstLine As Long, LastLine As Long)
      Dim lngL As Long

      Application.ScreenUpdate = False
      Application.DisplayAlerts = False
      For lngL = LastLine To FirstLine Step -1
      If Cells(2, 7).Value = mauvais Then
      Rows(lngL).Delete Shift:=xlShiftUp
      End If
      Next lngL
      Application.DisplayAlerts = True
      Application.ScreenUpdate = True
      End Sub

      J'ai dû omettre quelque chose car la macro n'est pas reconnue.

      Si tu vois où se trouve l'erreur, je te serai reconnaissant de me le préciser.

      merci par avance,

      Derout
      0
  2. Bonjour,
    Je debute (depuis 1h) en VB. mais j'aimerais faire la meme operation mais sur des colonne.
    A savoir un total en bas de colonne et si la somme est egale a 0, supprimer la colonne.

    Merci par avance
    0
    1. bonjour,

      je suis dans la même galère!

      je souhaiterais supprimer une ligne si une cellule de la colonne A est supérieur à 600 000.

      Quelqu'un peut il m'aider!

      Merci d'avance
      0