Suppression de lignes suivant un contenu

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

C

christ91

Guest
Bonjour,

Voici mon problème, j'ai dans un classeur excel 2 feuilles .

la feuille 1 contient la liste de clients que je veux supprimer de la feuille 2.

Dans ma feuille 2 il peut y avoir plusieurs fois le nom du même client, et c'est là que j'ai un problème.
je n'arrive pas à faire une boucle pour supprimer toutes les lignes contenant c'est clients.

je joints un fichier exemple.

Merci
 

Pièces jointes

Re : Suppression de lignes suivant un contenu

re tous 🙂🙂🙂

comme te la expliqué l'ami job🙂 tu adaptes le nom des feuilles
autrement je te donne le code brut par exemple copier 10 colonnes en feuil3
tu remarques le tablo... t va de a1 a j
donc
Feuil2.Range("a1:j" & Feuil2.Cells(Rows.Count, 1).End(3).Row)
redim idem
ReDim t1(1 To UBound(t), 1 To 10)
la restitution idem 10

Feuil3.[a1].Resize(x, 10) = t1



Code:
Sub esb()
 Dim t(), t1(), t2(), i As Long, x As Long, m As Object, c As Byte
  Set m = CreateObject("Scripting.Dictionary")
 t2 = Feuil1.Range("a1:a" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
 t = Feuil2.Range("a1:j" & Feuil2.Cells(Rows.Count, 1).End(3).Row)
 For i = 1 To UBound(t2)
 If Not m.Exists(t2(i, 1)) Then m.Add t2(i, 1), t2(i, 1)
 Next i
 ReDim t1(1 To UBound(t), 1 To 10)
  For i = 1 To UBound(t)
 If Not m.Exists(t(i, 1)) Then
 x = x + 1
 For c = 1 To 10: t1(x, c) = t(i, c): Next c
 End If
 Next i
  Feuil3.[a1].Resize(x, 10) = t1
 End Sub

apres on peu aller plus vite en utilisant directement Dictionary optimiser la declaration des tablos
mais bon sans plus d'infos combien de lignes en feuil1 & feuil2 ??? cela a son importance

salut Job🙂🙂 bien aime ta remarque
 
Re : Suppression de lignes suivant un contenu

Re,

Ce code utilise la méthode de Laetitia avec un nombre quelconque de colonnes :

Code:
Sub SupprimerClients()
Dim t1, t2, ncol%, d As Object, i&, n&, j%
With ActiveWorkbook.Sheets(1) '1ère feuille du classeur actif
  t1 = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)(2)) 'au moins 2 éléments
End With
With ActiveWorkbook.Sheets(2) '2ème feuille du classeur actif
  t2 = .UsedRange.Resize(.UsedRange.Rows.Count + 1) 'au moins 2 éléments
End With
ncol = UBound(t2, 2)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t1)
  d(t1(i, 1)) = ""
Next
For i = 1 To UBound(t2)
  If Not d.Exists(t2(i, 1)) Then
    n = n + 1
    For j = 1 To ncol
      t2(n, j) = t2(i, j)
    Next
  End If
Next
'---restitution---
With ActiveWorkbook.Sheets(3) '3ème feuille du classeur actif
  .Cells.ClearContents 'RAZ
  If n Then .[A1].Resize(n, ncol) = t2
  .Activate 'facultatif
End With
End Sub
Bien sûr le classeur doit avoir au moins 3 feuilles, formatez la 3ème comme vous le désirez.

Edit : ah bien le bonsoir chère Laeti 🙂

A+
 
Dernière édition:
Re : Suppression de lignes suivant un contenu

Re,

J'ai testé le fichier du post #1 avec 163000 lignes et les colonnes B:J remplies de 1 en Feuil2.

Sur Win 7 - Excel 2010 les macros des posts #17 et #18 s'exécutent toutes deux en 3,2 secondes.

Bonne fin de soirée.
 
Re : Suppression de lignes suivant un contenu

Bonsoir,


Merci pour vos réponses, le code répond parfaitement à mes attentes, voir plus ! car Je vais pouvoir traiter mes fichiers en 1 temps record.
Alors que j'étais parti pour faire une boucle. avec la recherche find.
D'ailleurs, savez vous...(je pense que oui...) comment gérer l'erreur, quand elle ne trouve pas la valeur recherchée dans la feuille ?


Bonne soirée
 
- 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
XL 2019 B
Réponses
10
Affichages
599
Réponses
22
Affichages
1 K
Réponses
18
Affichages
575
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
649
Retour