[VB Excel] Suppression de ligne sur critère

Résolu
Lalence Messages postés 8 Statut Membre -  
allfrede Messages postés 7 Statut Membre -
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. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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. derout Messages postés 25 Statut Membre 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. Funkycops
     
    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
  3. allfrede Messages postés 7 Statut Membre
     
    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