Macro pour supprimer une ligne selon critères

Fermé
smaret Messages postés 5 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 2 avril 2011 - 13 mars 2011 à 19:19
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 14 mars 2011 à 18:23
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.

A voir également:

2 réponses

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 14/03/2011 à 17:42
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
smaret Messages postés 5 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 2 avril 2011
14 mars 2011 à 17:41
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
14 mars 2011 à 17:43
re

j'ai fait une modif à la ligne

DerLig = .Range(colcritere & 65536).End(xlUp).Row
0
smaret Messages postés 5 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 2 avril 2011
14 mars 2011 à 18:01
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