Nettoyage d'une base données

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

G

guettacarini

Guest
J'ai une base de données avec des codes de tout type... Ex: LU00000001,LU00000002 ...(plus ou moins 40 noms différents dans la colonne A, cellule A1 à A40, ce nombre de nom peut augmenter via extraction mais ce n'est pas le problème ici).
Dans un autre onglet, j'ai une liste de codes indésirables (4 par exemple, cellule A1 à A4 mais le nombre de personnes indésirables peut augmenter et je mettrais à jour les codes par la suite.

J'aimerai une macro qui va chercher un par un les noms indésirables et supprimer la ligne entière (car j'ai d'autres infos correspondant au code que j'aimerai supprimer)

Je vous remercie d'avance
 

Pièces jointes

Re : Nettoyage d'une base données

Bonsoir,

Il y a plusieurs façon de procéder, mais voici une proposition :

VB:
Sub SupprimeCodes()
'Supprimer les lignes de codes dans la feuille Database, à partir
'des codes de la feuille "Code à supprimer"
'suppose que aucune ligne vide dans la 1re feuille et pas de doublons dans la feuille 2

Dim ws1 As Worksheet, ws2 As Worksheet
Dim rg1 As Range, rg2 As Range, rg3 As Range

Set ws1 = ThisWorkbook.Sheets("Code à supprimer")
Set ws2 = ThisWorkbook.Sheets("Database")

Set rg1 = ws1.Range("A1")
Set rg2 = ws2.Range("A1:A" & ws2.Range("A65536").End(xlUp).Row)

On Error Resume Next
Do Until IsEmpty(rg1)
    rg2.Find(what:=rg1).EntireRow.Delete
    Set rg1 = rg1.Offset(1, 0)  'prochaine valeur
Loop

End Sub
A+
 
Re : Nettoyage d'une base données

Merci beaucoup....
Je viens de tester sur mon template et c'est ok.

J'avais fait un truc avec recherche v...
Supprimer...

Mais bon, cela semble plus propre avec ton code.
Je comprends pas tout mais je vais m'en inspirer.
 
Re : Nettoyage d'une base données

Bonjour

Tu peux aussi utiliser un filtre élaboré (avec ou sans macros)
(l'avantage sera la rapidité d'exécution de la suppression

Voici comment faire
1) Tu insères un entête et tu saisis un nom ex: SUPPRESS et C1 tu saisis également SUPPRESS et tu copies/colles en C2:C5 les codes à supprimer
2)Tu sélectionnes la colonne A et tu appliques un Filtre élaboré
3)Ensuite tu fais Supprimer la ligne

Et voilou

EDITION: Une variante VBA qui évite de copier/coller les codes à supprimer
Pour que la macro ci dessous fonctionne, il faut
que sur les deux feuilles en A1, il y ait des entêtes indentiques (et ce avant de lancer la macro)
Code:
Sub Macro1()
Dim pf As Range
With Worksheets("Code à supprimer")
.Range(.[A1], .[A65536].End(xlUp)).Name = "A_SUPPR"
End With
Feuil2.Range("A1:A41").AdvancedFilter _
        Action:=xlFilterInPlace, _
        CriteriaRange:=Range("A_SUPPR"), _
        Unique:=False
Set pf = Feuil2.Range("_FilterDataBase")
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
Feuil2.ShowAllData
End Sub
 
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

Retour