Macro de suppression de lignes.

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • 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 !

J

JJ1

Guest
Bonjour à tous,

Je souhaiterais supprimer via une macro des lignes dans mon fichier sous 2 conditions:
-ne pas avoir 2 ou plus nombres en commun avec une saisie
-ne pas être la ligne au dessus d'un tel cas.
Je joins un exemple avec le résultat attendu en Feuil2.
Merci de votre aide.
Bon mardi
 

Pièces jointes

Re : Macro de suppression de lignes.

Bonjour JJ1 🙂,
Y a surement moyen de faire plus léger, mais ce code semble fonctionner
Code:
Sub test()
Dim Tableau(), I As Integer, J As Integer
I = 2
With Application.WorksheetFunction
While Cells(I, 1) <> ""
If .CountIf(Range(Cells(I, 1), Cells(I, 5)), Cells(1, 1)) _
    + .CountIf(Range(Cells(I, 1), Cells(I, 5)), Cells(1, 2)) _
    + .CountIf(Range(Cells(I, 1), Cells(I, 5)), Cells(1, 3)) _
    + .CountIf(Range(Cells(I, 1), Cells(I, 5)), Cells(1, 4)) _
    + .CountIf(Range(Cells(I, 1), Cells(I, 5)), Cells(1, 5)) < 2 Then
    If .CountIf(Range(Cells(I + 1, 1), Cells(I + 1, 5)), Cells(1, 1)) _
        + .CountIf(Range(Cells(I + 1, 1), Cells(I + 1, 5)), Cells(1, 2)) _
        + .CountIf(Range(Cells(I + 1, 1), Cells(I + 1, 5)), Cells(1, 3)) _
        + .CountIf(Range(Cells(I + 1, 1), Cells(I + 1, 5)), Cells(1, 4)) _
        + .CountIf(Range(Cells(I + 1, 1), Cells(I + 1, 5)), Cells(1, 5)) < 2 Then
        ReDim Preserve Tableau(J)
        Tableau(J) = I
        J = J + 1
    End If
End If
I = I + 1
Wend
End With
If J = 0 Then Exit Sub
For I = UBound(Tableau) To LBound(Tableau) Step -1
Rows(Tableau(I)).Delete
Next I
End Sub
Bonne journée 😎
 
Re : Macro de suppression de lignes.

bonjour JJ1 🙂 ,Bonjour JNP 🙂

Une version differente qui semble fonctionner egalement

Code:
Sub efface()
mot = ";"
For Each cel In Range("A1:E1")
  mot = mot & cel & ";"
Next
For n = Range("A65536").End(xlUp).Row To 2 Step -1
  For p = 1 To 5
    If InStr(mot, ";" & Cells(n, p) & ";") <> 0 Then
      nb = nb + 1
    End If
  Next p
  If nb < 2 Then
    Rows(n).Delete
  Else
    n = n - 1
  End If
  nb = 0
Next n
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
497
Réponses
5
Affichages
165
Réponses
6
Affichages
328
Retour