IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer les lignes qui contiennent un mot [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Supprimer les lignes qui contiennent un mot
    Bonjour

    Cela va vous paraître certainement simple mais je cherche à créer une macro qui me supprime toutes les lignes contenant un mot dans une base de données?

    Merci de votre aide

    Gommme

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    le mot en question se trouve dans quelle colonne?
    ce mot fait partie du contenu des cellules en question ou bien en est LE contenu
    il faut plus de précision.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Le mot se trouve dans la première colonne et EST le contenu de la colonne.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ligne 1 c'est la ligne des titres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub CommandButton1_Click()
    Dim Lastlig As Long
    Dim TonMot As String
     
    TonMot = "Toto"
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        .AutoFilterMode = False
        Lastlig = .Cells(Rows.Count, 1).End(xlUp).Row
        .Range("A1").AutoFilter field:=1, Criteria1:=TonMot
        If .Range("A1:A" & Lastlig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("A2:A" & Lastlig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilterMode = False
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup

    Cela fonctionne impeccable.
    Si je veux rajouter un autre mot, je crée une autre variable et j'ajoute

    Criteria1:=TonMot OR Criteria1:=AutreMot ?

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    F1 sur autofilter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Range("A1").AutoFilter field:=1, Criteria1:=TonMot, Operator:=xlOr, Criteria2:=AutreMot
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    J'ai créé un bouton avec la barre formulaire en lui affectant la macro que vous avez faite mais rien ne se fait quand je clique dessus ?

    Quelle manipulation dois-je faire ?

    Sinon puis je me permettre une autre question ?

    Comment rajouter une colonne (première colonne) en y inscrivant le nom de la feuille sur chaque ligne (chaque feuille a un nome de ville que je veux rajouter à la première colonne de chaque ligne)

    Le programme bloque, il filtre bien "Autre Mot" sans prendre "MonMot", et reste bloqué sur ce filtre sans supprimer de ligne.

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    J'avais testé avec un CommandButton
    Tu mets la procédure dans un module standard, avec l'appellation choisie, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Sub SupprMot()
    Dim Lastlig As Long
    Dim TonMot As String, SecondMot As String
     
    TonMot = "Toto"
    SecondMot = "Kuku"
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        .AutoFilterMode = False
        Lastlig = .Cells(Rows.Count, 1).End(xlUp).Row
        .Range("A1").AutoFilter field:=1, Criteria1:=TonMot, Operator:=xlOr, Criteria2:=SecondMot
        If .Range("A1:A" & Lastlig).SpecialCells(xlCellTypeVisible).Count > 1 Then _
            .Range("A2:A" & Lastlig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilterMode = False
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Désolée Mercatog

    Ton programme fonctionne très bien c'est moi qui avait fait une erreur.

    Merci beaucoup pour ton aide.

    Pour ma précédente question, (rajouter une colonne avec le nom de la feuille), j'ai réussi à le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Sub AjouterService()
    '
        Dim Feuillet As String
        Feuillet = ActiveSheet.Name
        Range("A1").Select
        Selection.EntireColumn.Insert
        ActiveCell.FormulaR1C1 = "Service"
        Range("A2").Select
        Selection.CurrentRegion.Select
        Selection.SpecialCells(xlCellTypeBlanks).Select
        Selection.FormulaR1C1 = Feuillet
        Range("A1").Select
     
    End Sub
    Merci encore pour ton aide précieuse.

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Evite les .Select
    ci joint code qui boucle sur toutes les feuilles du classeur, si en A1 il n'y a pas le mot Service, il ajoute une colonne avec le nom de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public Sub AjoutColonne()
    Dim sht As Worksheet
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    For Each sht In ThisWorkbook.Worksheets
        With sht
            LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
            If LastLig > 1 Then
                If .Range("A1").Value <> "Service" Then
                    .Columns(1).Insert
                    .Range("A1").Value = "Service"
                    .Range("A2:A" & LastLig).Value = .Name
                End If
            End If
        End With
    Next sht
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copier les lignes qui contiennent une valeur
    Par coolmomodu31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/12/2013, 21h39
  2. Réponses: 1
    Dernier message: 04/06/2012, 22h19
  3. [XL-2003] Suppression de lignes qui contiennent des mots d'une liste
    Par fortbelin dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/09/2011, 15h47
  4. [XL-2007] modifier dans une plage toutes les cellules qui contiennent un mot précis en VBA
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2010, 18h24
  5. Réponses: 1
    Dernier message: 18/05/2009, 19h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo