Bonjour
J’utilise pour traiter un fichier une macro de Jacques Boisgontier et une autre de PierreJean. Ces 2 macros fonctionnent parfaitement pour mon cas mais à un détail près. Le fichier fourni par la préfecture est un recueil national de 50 000 adresses. Je joins un échantillon comme exemple.
Dans la première colonne j’utilise la macro de Pierrejean pour éliminer les noms qui ne m’intéressent pas. Ces noms sont rangés dans la feuille « Exclusions ». Cette macro fonctionne très bien mais ne supprime qu’une seule fois les noms de la feuille « fichier final » alors qu'ils peuvent être présents de multiples fois. Je suppose qu’il faudrait ajouter quelque part une boucle de traitement.
Sub supprimer()
Application.ScreenUpdating = False
tablo = Sheets("Exclusions").Range("A2:A" & Sheets("Exclusions").Range("A655536").End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
Set c = Sheets("Fichier final").Columns("A").Find(tablo(n, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Rows(c.Row).Delete
End If
Next n
Application.ScreenUpdating = True
End Sub
Le fichier étant national, je ne voudrais garder que les noms de mon arrondissement dans la 3ème colonne. Pour ce faire j’utilise la macro de Jacques Boisgontier qui élimine tous les noms qui ne sont pas compris dans la feuille « villes ». Les noms de villes étant précédés et suivis de données qui ne m’intéressent pas (code postal, cedex, etc) j’ai mis un * devant et derrière le nom de la ville. Or contrairement à la routine de Pierrejean, ici ça ne fonctionne pas, il faut que le nom soit parfaitement identique, ce qui est le second problème.
Sub supLignesListe2()
'Application.ScreenUpdating = False
Set f1 = Sheets("Fichier final")
Set f2 = Sheets("Villes")
colCode = Application.Match("Ville", f1.[A1:Z1], 0)
colListe = Application.Match("Ville", f2.[A1:Z1], 0)
If Not IsError(p2) Then
n = f2.Cells(65000, colListe).End(xlUp).Row
Liste = f2.Cells(2, colListe).Resize(n - 1)
End If
If Not IsError(col) And Not IsError(colListe) Then
For i = f1.Cells(Rows.Count, colCode).End(xlUp).Row To 2 Step -1
c = Application.Match(f1.Cells(i, colCode), Liste, 0)
If IsError(c) Then f1.Rows(i).Delete
Next i
End If
'Application.ScreenUpdating = True
End Sub
Merci pour votre aide
J’utilise pour traiter un fichier une macro de Jacques Boisgontier et une autre de PierreJean. Ces 2 macros fonctionnent parfaitement pour mon cas mais à un détail près. Le fichier fourni par la préfecture est un recueil national de 50 000 adresses. Je joins un échantillon comme exemple.
Dans la première colonne j’utilise la macro de Pierrejean pour éliminer les noms qui ne m’intéressent pas. Ces noms sont rangés dans la feuille « Exclusions ». Cette macro fonctionne très bien mais ne supprime qu’une seule fois les noms de la feuille « fichier final » alors qu'ils peuvent être présents de multiples fois. Je suppose qu’il faudrait ajouter quelque part une boucle de traitement.
Sub supprimer()
Application.ScreenUpdating = False
tablo = Sheets("Exclusions").Range("A2:A" & Sheets("Exclusions").Range("A655536").End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
Set c = Sheets("Fichier final").Columns("A").Find(tablo(n, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Rows(c.Row).Delete
End If
Next n
Application.ScreenUpdating = True
End Sub
Le fichier étant national, je ne voudrais garder que les noms de mon arrondissement dans la 3ème colonne. Pour ce faire j’utilise la macro de Jacques Boisgontier qui élimine tous les noms qui ne sont pas compris dans la feuille « villes ». Les noms de villes étant précédés et suivis de données qui ne m’intéressent pas (code postal, cedex, etc) j’ai mis un * devant et derrière le nom de la ville. Or contrairement à la routine de Pierrejean, ici ça ne fonctionne pas, il faut que le nom soit parfaitement identique, ce qui est le second problème.
Sub supLignesListe2()
'Application.ScreenUpdating = False
Set f1 = Sheets("Fichier final")
Set f2 = Sheets("Villes")
colCode = Application.Match("Ville", f1.[A1:Z1], 0)
colListe = Application.Match("Ville", f2.[A1:Z1], 0)
If Not IsError(p2) Then
n = f2.Cells(65000, colListe).End(xlUp).Row
Liste = f2.Cells(2, colListe).Resize(n - 1)
End If
If Not IsError(col) And Not IsError(colListe) Then
For i = f1.Cells(Rows.Count, colCode).End(xlUp).Row To 2 Step -1
c = Application.Match(f1.Cells(i, colCode), Liste, 0)
If IsError(c) Then f1.Rows(i).Delete
Next i
End If
'Application.ScreenUpdating = True
End Sub
Merci pour votre aide