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 ligne contenant un mot précis


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Supprimer ligne contenant un mot précis
    Bonjour,

    J'ai lu cette discussion.

    Citation Envoyé par DjiLow Voir le message
    Ben je viens de trouver une solution qui fonctionne à l'instant
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub SupLign()
    Dim i As Long
    For i = Range("B65536").End(xlUp).Row To 1 Step -1
        If Not UCase(Cells(i, 2).Value) Like UCase("*ordinateur*") Then Rows(i).Delete
    Next i
    End Sub
    Merci quand même zyhack
    Effectivement cette macro fonctionne très bien.

    J'aimerais savoir comment on peut l'appliquer sur toutes les feuilles d'un même fichier.

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    En parcourant simplement toutes les feuilles de ton classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim sheet As Worksheet
     
    For Each sheet In Sheets
    sheet.Activate
    'Ici le code à faire.....
    Next

  3. #3
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Super. Fonctionne très bien.

    Je ne suis pas un expert en VBA. Si je voudrait y ajouter des mots, je m'y prend comment. Exemple: si je voudrais en plus du mot 'ordinateur' les mots 'clavier' et 'souris'. Je suppose que c'est simple, mais je suis débutant.

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Il faudrait partir sur la gestion de ces mots dans un tableau par exemple pour les stocker et les modifier de manière simple.
    Et dans le traitement parcourir ce tableau pour vérifier chaque mots.

  5. #5
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Malheureusement je dois inclure ces mots dans la macro, même si la gestion est un peu plus difficile. Le fichier est exporté d'un autre logiciel et cette liste de mots ne viens pas avec. Concrètement, j'exporte vers Excel une cédule d'ordonnancement de travaux à partir d'un logiciel de planification et par une macro je conserve les équipements qui demande une libération.

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Quand je parle de tableau je ne parle pas de feuilles et de cellules mais bien d'un tableau en VBA.
    Une Array quoi.

    Qui te servira de paramètre dans ton code pour simplifier l'ajout ou la suppression de mots

    Voir ici

  7. #7
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Je suis ouvert à toutes solutions. Mais je débute avec le VBA et je n'y connait pas grand chose pour l'instant. Si tu peux me fournir le code, cela serait très apprécié. Sinon, en attendant de perfectionner mes connaissances en VBA, je suis prêt à le faire avec la macro actuel. J'ai juste besoin de savoir comment ajouter d'autres mots.

    Merci pour le lien, je vais en prendre connaissance.

  8. #8
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ok je regarde ça.

    Edit : je te propose ça :
    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 Const mesMots = "toto:tot:titi:tata:tutu"
     
    Sub SupLign()
        Dim i As Long
        Dim arMesMots() As String
        Dim mot As Variant
     
        arMesMots = Split(UCase(mesMots), ":")
     
        For i = Range("B65536").End(xlUp).Row To 1 Step -1
            For Each mot In arMesMots
                If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then
                    Rows(i).Delete
                    Exit For
                End If
            Next
        Next i
    End Sub

  9. #9
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Si j'ai bien compris, je dois remplacer les mots toto, titi, ... par les mots que j'ai besoin. Si c'est bien cela, je perds toutes mes données.

  10. #10
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    J'ai éditer le code, j'étais parti sur l'inverse

    Du coup c'est plus simple, quand un mots de la liste est trouvé dans la cellule courante, la ligne est supprimée.

    Tu place dans mesMots les mots qui doivent engendrer une suppression de la ligne.

  11. #11
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    EUH...Je désire conserver les lignes qui contiennent ces mots et non les supprimer. Désolé pour la confusion. Je croyais à tort que mes explications était correct.

  12. #12
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Le post dans lequel tu est à un titre qui indique :
    Supprimer ligne contenant un mot précis
    Si tu reprends ce code du coup :
    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
    19
    20
    21
    22
    23
    Public Const mesMots = "toto:titi:tata:tutu"
     
    Sub SupLign()
        Dim i As Long
        Dim arMesMots() As String
        Dim mot As Variant
        Dim trouveMot As Boolean
     
        arMesMots = Split(UCase(mesMots), ":")
     
        For i = Range("B65536").End(xlUp).Row To 1 Step -1
            trouveMot = False
            For Each mot In arMesMots
                If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then
                    trouveMot = True
                    Exit For
                End If
            Next
            If Not trouveMot Then
                Rows(i).Delete
            End If
        Next i
    End Sub
    C'est bien ce que tu veux, si la cellule courante ne contient pas le mot alors sa ligne est supprimée.

  13. #13
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Effectivement, j'airais probablement du démarrer un autre post et ne pas partir d'un qui existe déjà.

    Excellent. Fonctionne à la perfection. Un gros merci, tu viens de rendre quelqu'un heureux.

    Dernière question. Est-il possible de conserver les cellules vides. J'ai essayer en ne mettant pas de mot dans la liste. Ça ne fonctionne pas.

  14. #14
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Or IsEmpty(Cells(i, 2).Value) Then

  15. #15
    Candidat au Club
    Homme Profil pro
    Planificateur maintenance
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Planificateur maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Super. Encore une fois, merci.

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

Discussions similaires

  1. [XL-2007] supprimer lignes contenant mot dans classeur entier (avec InputBox)
    Par DlouJ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/04/2014, 15h22
  2. Supprimer les lignes contenants un mot specifique en batch file
    Par stpaul04 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 12/02/2011, 14h11
  3. Supprimer ligne contenant un mot précis
    Par DjiLow dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2010, 09h19
  4. Réponses: 6
    Dernier message: 18/10/2006, 09h17
  5. copier une ligne contenant un mot
    Par newbiedelphi dans le forum Delphi
    Réponses: 2
    Dernier message: 25/07/2006, 11h02

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