Macro pour supprimer une ligne selon critères

smaret Messages postés 6 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Je débute dans l'élaboration des macros.
Je voudrais créer une macro qui supprime la ligne en fonction de critères repris dans une colonne (ex colonne F).
L'objectif est de supprimer les lignes qui contiennent les mots LTVA, LD, production et vignette dans la colonne F. Les cellules peuvent contenir plusieurs mots (ex. vente vignette), la ligne devra être supprimée, car elle contient le mot vignette.
D'anvance merci pour votre aide.

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    Option Explicit   
    Option Base 1   
    
    Sub SupprimeLigne()   
    Const NomFeuille = "Feuil1"   
    Const colcritere = "F"   
    Const PremLig = 1  
    Dim TabMotsCles   
    Dim s As String   
    Dim Lig As Long, DerLig As Long, NumMot As Long, NbMots As Long   
    Dim trouve As Boolean   
      ' initalisations   
      TabMotsCles = Array("LTD", "LTVA", "VIGNETTE", "PRODUCTION")   
      NbMots = UBound(TabMotsCles, 1)   
      Application.ScreenUpdating = False   
      With Sheets(NomFeuille)   
        ' dernière ligne   
        DerLig = .Range(colcritere & 65536).End(xlUp).Row   
        ' traitement de la colonne colcritere   
        For Lig = DerLig To PremLig Step -1   
          ' met en majuscule la cellule   
          s = UCase(.Range(colcritere & Lig))   
          trouve = False   
          ' recherche d'un mot cle dans s   
          For NumMot = 1 To NbMots   
            If InStr(1, s, TabMotsCles(NumMot)) > 0 Then   
              trouve = True   
              Exit For   
            End If   
          Next NumMot   
          ' si trouve mot cle supprimer la ligne lig   
          If trouve Then   
            .Range(colcritere & Lig).EntireRow.Delete   
          End If   
        Next Lig   
      End With   
      Application.ScreenUpdating = True   
    End Sub   
    
    Private Sub CommandButton1_Click()   
      Call SupprimeLigne   
    End Sub


    Changer les valeurs des constantes
    Completer le tableau des mots clés (en majuscules)

    Est ce que ça répond a la question
    0
    1. smaret Messages postés 6 Statut Membre
       
      Super !! cela fonctionne.
      Un grand merci :-)

      En principe, le classeur contenant la macro ne va pas être modifié. Je voudrai activer la macro sur un autre classeur dont le nom peut changer (ex. 20120321-Rapport journalier)
      Est il possible d'activer la macro sur un autre classeur ouvert ou actif.

      Avec cette solution, je vais pouvoir terminer ma macro.

      D'avance, je te remercie pour ton aide :-))
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      re

      j'ai fait une modif à la ligne

      DerLig = .Range(colcritere & 65536).End(xlUp).Row
      0
    3. smaret Messages postés 6 Statut Membre
       
      Est ce que ce changement supprime la cel. dans un autre classeur ?
      J'ai essayé la macro avec un autre classeur ouvert et les cellules de la collone F avec les critères définis n'ont pas été supprimées.
      0