Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro - Suppression de lignes suivant deux critères

  • Initiateur de la discussion Initiateur de la discussion Sofhy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sofhy

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoins de faire deux types de suppression de lignes dans un tableau.

J'ai parcouru le forum, et j'ai réussi à concevoir un script à partir de plusieurs exemples extraits de différents fils (je suis débutante, donc ce n'est pas ultra optimiser, mais ça fonctionne 😀. Je pense que ça va en faire rire certains).

Mon tableau PrR a une date mini au 1er mars et une date maxi au 15 mars. Ma macro permet de supprimer sur le tableau PrT toutes les dates avant le 1er mars et après le 15 mars (c'est à dire lignes n°2 et 3 puis supérieur à 65).

Pour mon deuxième type de suppression de lignes, au secours !!!
Je n'ai pas encore les compétences nécessaires pour adapter des scripts du forum 😡
A partir de mon tableau PrR, je voudrai comparer la combinaison "Date & Nom" à celle du tableau PrT. S'il n'y a pas de correspondance, alors, supprimer la ligne dans le tableau PrT (dans mon exemple, la ligne n°5 de PrT).

Peut être que ma macro actuelle ne sert à rien et qu'une seule peut tout faire.

Je vous joins un petit extrait de mon fichier.

Merci par avance pour votre aide,
Sofhy
 

Pièces jointes

Re : Macro - Suppression de lignes suivant deux critères

Peux etre ce code peuvent vous ete utile
Code:
Sub concat()

    Sheets("PrR").Select
    RowCount = Cells(Cells.Rows.Count, "a").End(xlUp).Row
    For i = 2 To RowCount
        Range("b" & i).Select
        dat = ActiveCell.Value
        Range("c" & i).Select
        nom = ActiveCell.Value
        Range("d" & i).Select
        ActiveCell.Value = dat & "," & nom
    Next

    'concatanned feuille PrT
    Sheets("PrT").Select
    RowCount = Cells(Cells.Rows.Count, "a").End(xlUp).Row
    For i = 2 To RowCount
        Range("b" & i).Select
        dat = ActiveCell.Value
        Range("c" & i).Select
        nom = ActiveCell.Value
        Range("d" & i).Select
        ActiveCell.Value = dat & "," & nom
    Next
End Sub
Sub comppare()
    On Error GoTo err_handler
    Sheets("PrR").Select
    RowCount = Cells(Cells.Rows.Count, "d").End(xlUp).Row
    For i = 2 To RowCount
        Sheets("PrR").Select
        Range("d" & i).Select
        val1 = ActiveCell.Value
        Sheets("PrT").Select
        Cells.Find(What:=val1, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
                   xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) _
                   .Activate
    Next


err_handler:
    If Err.Number = 91 Then
        Sheets("PrR").Select
        Range("d" & i).Select
        ActiveCell.EntireRow.Delete
        Resume Next
        '    Else
        '        MsgBox "Vous avez une erreur"
    End If
End Sub


Sub netttoya()
    Sheets("PrR").Select
    Columns("D:D").Select
    Selection.ClearContents
    Sheets("PrT").Select
    Columns("D:D").Select
    Selection.ClearContents
End Sub
 
Re : Macro - Suppression de lignes suivant deux critères

Bonsoir Sophy jetted le forum
bon alors j'ai un peu raccourci la macro
voilà testes et dis moi si c'est ce que tu veux ( pour la première partie)
la seconde j'attends ta réponse
a+
papou 🙂
 

Pièces jointes

Dernière édition:
Re : Macro - Suppression de lignes suivant deux critères

Bonsoir,

A tester.
Code:
Sub test()
    Dim PrR, PrT
    Dim i As Long, j As Long
    Dim Nom As String, LaDate As Date
    Dim trouve As Boolean
    Dim nbTrouves As Long
    Dim Cellules
    With Sheets("PrR")
        PrR = .Range("B2:C" & .Cells(.Rows.Count, 3).End(xlUp).Row).Value
    End With
    With Sheets("PrT")
        PrT = .Range("B2:C" & .Cells(.Rows.Count, 3).End(xlUp).Row).Value
        For i = UBound(PrT) To LBound(PrT) Step -1
            trouve = False
            Nom = PrT(i, 2): LaDate = PrT(i, 1)
            For j = UBound(PrR) To LBound(PrR) Step -1
                If PrR(j, 2) = Nom And PrR(j, 1) = LaDate Then
                    trouve = True
                    Exit For
                End If
            Next j
            If Not trouve Then .Cells(i + 1, 1).EntireRow.Delete
        Next i
    End With

End Sub

S'il y a beaucoup de lignes dans ton fichier final, on peut accélerer les choses si tu veux.

A+
 
Re : Macro - Suppression de lignes suivant deux critères

Re, re,

Papou, Hasco, Merci.
C'est nickel tout ça !

Hasco, je pense que je peux avoir Maximum 15.000 lignes, mais dans le cas exceptionnel où l'on interrogera l'année entière. Sinon, de façon général, je serai plutôt sur un traitement d'environ 1200 lignes. Même si ça met un peu de temps, ce n'est pas grave. C'est un fichier qui sera utilisé 2 à 3 fois par mois.

Merci à tous pour vos réponses.
Bonne soirée,
Sophie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…