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

VBA macro rechercher et supprimer une ligne

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

A

aclement

Guest
Bonjour,

Cela fait maintenant 3 jours que j'essaye désespérément de trouver la solution à ce problème :

L'objectif est de faire une macro !

Dans ma 'Feuille1' j'ai du texte écrit dans les cellules A1 à G1, je voudrais faire une recherche de cet ensemble de cellules Range("A1:G1") dans ma 'Feuille2' ... Pour info cette recherche se fera dans les mêmes colonnes soit entre les colonnes A et G de la "Feuille2'

Si dans ma 'Feuille2' il trouve exactement la sélection (A1:G1) de ma 'Feuille1" alors je voudrais supprimer la ligne sinon ne rien faire ...

Quelqu'un a-t-il une idée ?

Merci 🙂
 
Re : VBA macro rechercher et supprimer une ligne

Bonjour aclement, bienvenue sur XLD,

Ce n'est pas difficile mais il faudrait que vous déposiez votre fichier (allégé mais significatif) pour voir exactement de quoi il s'agit.

Et sur votre fichier indiquez les lignes que vous voulez supprimer pour qu'on soit bien d'accord.

A+
 
Re : VBA macro rechercher et supprimer une ligne

J'ai déposé en pièce jointe mon fichier.

J'ai commencé une macro qui recherche la ligne en question mais cela ne fonctionne pas !!!

Merci pour votre réponse !
 

Pièces jointes

Re : VBA macro rechercher et supprimer une ligne

Re,

Voyez le fichier joint et cette macro :

Code:
Sub SupprimerLignes()
Dim F1 As Worksheet, F2 As Worksheet, plage As Range
Dim t1, t2, ub%, i&, j%, sup As Boolean, n&
Set F1 = Sheet1 'CodeName de la feuille
Set F2 = Sheet2 'CodeName de la feuille
Set plage = Intersect(F2.UsedRange, F2.[A:G])
If Not plage Is Nothing Then
  Application.ScreenUpdating = False
  t1 = F1.[A1:G1] 'matrice, plus rapide
  t2 = plage 'matrice, plus rapide
  ub = UBound(t2, 2)
  For i = UBound(t2) To 1 Step -1
    sup = True
    For j = 1 To ub
      If t2(i, j) <> t1(1, j) Then sup = False: Exit For
    Next
    If sup Then n = n + 1: plage.Rows(i).Delete xlUp
  Next
  Application.ScreenUpdating = True
End If
MsgBox n & " ligne(s) supprimée(s)", , "Suppression"
End Sub
A+
 

Pièces jointes

Re : VBA macro rechercher et supprimer une ligne

Re,

Edit : J'ai modifié la définition de la plage :

Code:
Set plage = Intersect(F2.UsedRange.EntireRow, F2.[A:G])
Ainsi plage contient toujours au moins 7 cellules, on évite le test.

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : VBA macro rechercher et supprimer une ligne

Dernière petite chose ...

Il y a t-il possibilité de rechercher cette ligne non seulement dans la 'feuille2' mais également dans toutes les feuilles du classeur sauf la 'feuille1' ?

En faisant une boucle de ce type : For i = 2 To Sheets.Count

Encore merci pour votre aide ...

A+
 
Re : VBA macro rechercher et supprimer une ligne

Re,

Oui, une boucle sur toutes les feuilles du classeur :

Code:
Sub SupprimerLignes()
Dim F As Worksheet, t1, w As Worksheet, n&
Dim plage As Range, t2, ub%, i&, j%, sup As Boolean
Set F = Sheet1 'CodeName de la feuille
t1 = F.[A1:G1] 'matrice, plus rapide
Application.ScreenUpdating = False
For Each w In ThisWorkbook.Worksheets
  If w.Name <> F.Name Then
    n = 0
    Set plage = Intersect(w.UsedRange.EntireRow, w.[A:G])
    t2 = plage 'matrice, plus rapide
    ub = UBound(t2, 2)
    For i = UBound(t2) To 1 Step -1
      sup = True
      For j = 1 To ub
        If t2(i, j) <> t1(1, j) Then sup = False: Exit For
      Next
      If sup Then n = n + 1: plage.Rows(i).Delete xlUp
    Next
    MsgBox n & " ligne(s) supprimée(s) en feuille '" & w.Name & "'", , "Suppression"
  End If
Next
End Sub
Edit : comme au post #6 j'ai modifié la définition de plage.

A+
 
Dernière édition:
- 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

Réponses
16
Affichages
556
Réponses
19
Affichages
708
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…