Création MACRO pour nettoyage de base de données selon plusieurs critères

Bonjour,

Je souhaite créer une macro pour nettoyer une base de données que j’actualise toutes les semaines.

Je souhaite supprimer toutes les lignes contenant :

  • « NB » dans la colonne BF,
  • "BEANRU", “DEHAMU", "GBLGPU" et "NLRTMU" dans BH
  • (autres sur le même principe)

J’ai fait plusieurs petites macros en me basant sur des exemples sur le forum mais aucune ne fonctionne :

Sub Filtres_NB_WK_Report()

Dim x As Range 'Déclare la variable x -> x = cellule

Set x = Range("BF1:BF" & Range("BF65536").End(xlUp).Row) 'x = BF1 à dernière cellule pleine de BF

For Each x In x 'Boucle sur toutes les cellules pleines de la colonne BF
If x ="NB"  Then x.EntireRow.Delete 'Efface la ligne
End If 'Fin 
de la condition
Next x 'Fin de la boucle
End Sub

Sub Filtres_POD_WK_Report()

Dim x As Range 'Déclare la variable x -> x = cellule
Set x = Range("BH1:BH" & Range("BH65536").End(xlUp).Row) 'x = BF1 à dernière cellule pleine de BH
For Each x In x 

If x ="BEANRU" or

If x ="DEHAMU" or

If x ="GBLGPU" or

If x = "NLRTMU"

Then x.EntireRow.Delete 'Efface la ligne

End If 'Fin de la condition

Next x 'Fin de la boucle
End Sub

Je vous joins également un exemple du fichier Excel pour m’indiquer à quel moment je me trompe

D’avance merci pour votre aide et avis

Bonne journée,

Oups, désolé pour la mise en page bidon, j'ai fait un copier coller de mon message sous Excel et ça a donné qque chose de très laid,

Je reprends :

Bonjour,

Je souhaite créer une macro pour nettoyer une base de données que j’actualise toutes les semaines. Je souhaite supprimer toutes les lignes contenant :

  • « NB » dans la colonne BF,
  • "BEANRU", “DEHAMU", "GBLGPU" et "NLRTMU" dans BH
  • (autres sur le même principe)

J’ai fait plusieurs petites macros en me basant sur des exemples sur le forum mais aucune ne fonctionne :

Sub Filtres_NB_WK_Report()
Dim x As Range 'Déclare la variable x -> x = cellule
Set x = Range("BF1:BF" & Range("BF65536").End(xlUp).Row) 'x = BF1 à dernière cellule pleine de BF
For Each x In x 'Boucle sur toutes les cellules pleines de la colonne BF
If x ="NB"  Then x.EntireRow.Delete 'Efface la ligne
End If 'Fin de la condition
Next x 'Fin de la boucle
End Sub
Sub Filtres_POD_WK_Report()

Dim x As Range 'Déclare la variable x -> x = cellule
Set x = Range("BH1:BH" & Range("BH65536").End(xlUp).Row) 'x = BH1 à dernière cellule pleine de BH
For Each x In x 
If x ="BEANRU" or
If x ="DEHAMU" or
If x ="GBLGPU" or
If x = "NLRTMU"
Then x.EntireRow.Delete 'Efface la ligne
End If 'Fin de la condition
Next x 'Fin de la boucle
End Sub

Je vous joins également un exemple du fichier Excel pour m’indiquer à quel moment je me trompe

D’avance merci pour votre aide et avis

Bonne journée,

Bonjour,

En complément de la réponse de BibuNesco, voici quelques indications :

Sub Filtres_Safran_WK_Report()
Application.ScreenUpdating = False
Dim n As Integer
For n = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 'j'ai juste changé cette ligne pour trouver vraiment la dernière ligne occupée
If Range("BF" & n) = "NB" Then Rows(n).Delete 'si tu as une seule indication dans ton SI, tu peux le mettre sur la même ligne que le IF et tu n'as ainsi pas besoin du else, ni du end if
Next n
End Sub

Sinon, pour tester plusieurs valeurs, tu peux faire de différentes manières. La moins bonne mais la plus facile à comprendre dans un 1er temps serait de structurer tes IF ainsi :

Sub Filtres_Safran_WK_Report()
Application.ScreenUpdating = False
Dim n As Integer
For n = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
If Range("BF" & n) = "NB" or Range("BH" & n) = "BEANRU" or Range("BH" & n) = "DEHAMU" or Range("BH" & n) = "GBLGPU" or Range("BH" & n) = "NLRTMU" Then Rows(n).Delete
Next n
End Sub

Je rajouterais également qu'il vaudrait mieux mettre cette macro dans un module et pas forcément sur ta feuille, puisque que tu ne le lanceras à priori pas suite à un événement qui se produira sur la feuille.

Bonjour Bibu,

Merci beaucoup , mais je ne trouve pas ce que je cherche sur ces liens malheureusement,

Super,

Ca marche maintenant !

Un grand merci et bonne journée !

Rechercher des sujets similaires à "creation macro nettoyage base donnees criteres"