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 :

Suppression de lignes selon critères


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut Suppression de lignes selon critères
    Bonjour,
    J'aimerais supprimer des lignes si les cellules de la colonne A1 ne contiennent pas les valeurs suivantes 1,2...48 ou A1, A2...G24 ou Trk1...Trk12

    Je sais que cela représente un certain nombre de conditions donc est-ce possible de faire cela ?
    Y aurait-il une autre façon de faire ?

    Car j'ai déjà fait une petite macro qui supprime une ligne selon 2 critères (les cellules de la colonne D et E contiennent la valeur 0).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub SupLignes()
    Dim L As Long
    For L = 5001 To 2 Step -1
       If Feuil1.Cells(L, 4).Value = 0 And Feuil1.Cells(L, 5).Value = 0 Then Feuil1.Rows(L).Delete
       Next L
    End Sub
    La le nombre de conditions me parait entrainement nombreux et je me pose la question de la faisabilité.

    Merci de votre avis

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Un exemple pour la colonne A
    • condition 1 = valeur comprise entre Trk1 et Trk12
    • condition 2 = valeur comprise entre A1 et G24
    • condition 3 = valeur comprise entre 1 et 48

    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
    24
    25
    Sub test()
    Dim i As Integer
     
    With Sheets("Feuil1")
        'boucle de la dernière ligne de la colonne A à la ligne 2
        For i = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            If Left(.Cells(i, 1), 3) = "Trk" Then '<-- si la cellule commence par Trk (condition 1)
                Select Case Mid(.Cells(i, 1), 4) '<-- vérification des caractères qui suivent Trk
                    Case 1 To 12: .Cells(i, 1).EntireRow.Delete '<-- si c'est compris entre 1 et 12 on supprime la ligne
                End Select
            Else '<-- si la condition 1 n'est pas remplie
                Select Case Asc(Left(.Cells(i, 1), 1)) '<-- vérification du code Ascii du premier caractère de la cellule (condition 2)
                    Case 65 To 71 '<-- si le code Ascii est compris entre 65 et 71 (de A à G majuscule)
                        Select Case Mid(.Cells(i, 1), 2) '<-- vérification des caractères qui suivent A...G
                            Case 1 To 24: .Cells(i, 1).EntireRow.Delete '<-- si c'est compris entre 1 et 24 on supprime la ligne
                        End Select
                Case Else '<-- si les conditions 1 et 2 ne sont pas remplies
                    Select Case .Cells(i, 1) '<-- vérification du contenu de la cellule (condition 3)
                        Case 1 To 48: .Cells(i, 1).EntireRow.Delete '<-- si c'est compris entre 1 et 48 on supprime la ligne
                    End Select
                End Select
            End If
        Next
    End With
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    Merci de ton aide.
    Cependant c'est le contraire que je souhaite faire
    supprimer des lignes si les cellules de la colonne A1 ne contiennent pas les valeurs suivantes 1,2...48 ou A1, A2...G24 ou Trk1...Trk12

    Peux tu m'aider, il y a certainement peu d'éléments à modifier ?

    Merci.

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Sorry j'avais mal lu...

    Tu peux faire comme ceci :
    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
    24
    25
    26
    27
    Sub test()
    Dim i As Integer
     
    With Sheets("Feuil1")
        'boucle de la dernière ligne de la colonne A à la ligne 2
        For i = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            If Left(.Cells(i, 1), 3) = "Trk" Then '<-- si la cellule commence par Trk (condition 1)
                Select Case Mid(.Cells(i, 1), 4) '<-- vérification des caractères qui suivent Trk
                    Case 1 To 12: GoTo suite '<-- si c'est compris entre 1 et 12 on passe la ligne
                End Select
            Else '<-- si la condition 1 n'est pas remplie
                Select Case Asc(Left(.Cells(i, 1), 1)) '<-- vérification du code Ascii du premier caractère de la cellule (condition 2)
                    Case 65 To 71 '<-- si le code Ascii est compris entre 65 et 71 (de A à G majuscule)
                        Select Case Mid(.Cells(i, 1), 2) '<-- vérification des caractères qui suivent A...G
                            Case 1 To 24: GoTo suite '<-- si c'est compris entre 1 et 24 on passe la ligne
                        End Select
                Case Else '<-- si les conditions 1 et 2 ne sont pas remplies
                    Select Case .Cells(i, 1) '<-- vérification du contenu de la cellule (condition 3)
                        Case 1 To 48: GoTo suite '<-- si c'est compris entre 1 et 48 on passe la ligne
                    End Select
                End Select
            End If
        .Cells(i, 1).EntireRow.Delete '<-- si aucune des 3 conditions n'est remplie on supprime la ligne
    suite:
        Next
    End With
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    ok merci bien

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

Discussions similaires

  1. [XL-2013] Macro suppression de lignes selon critère - fichier volumineux
    Par demeter dans le forum Excel
    Réponses: 9
    Dernier message: 13/06/2014, 18h28
  2. Grouper lignes selon critères
    Par Yashin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/07/2009, 10h00
  3. Supprimer une ligne selon critère
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/04/2009, 15h14
  4. [E-03] Macro Extraire des Lignes selon critère
    Par willybass dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/03/2009, 07h33
  5. [VBA-E] sélection plusieurs lignes selon critères
    Par clairefranclieu dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/09/2006, 17h22

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