Macro suppression sur plusieurs classeurs

mika909

XLDnaute Nouveau
Bonjour tout le monde. Je cherche à créer une macro pour excel 2010 mais je patauge (pas expert en macros).

Voici mon souci :

Je possède 3 classeurs qui possèdent beaucoup de lignes sur 1 colonne.

classeur 1 : 575.000 lignes en colonne A
classeur 2 : 700.000 lignes en colonne A
classeur 3 : 350.000 lignes en colonne A

Les données du classeur 3 sont des références à supprimer dans les classeurs 1 et 2. Ces références sont soit dans un classeur soit dans l'autre. Optionnellement, il ne faudrait pas supprimer les valeurs du classeur 3.

Est-il possible de faire cela par macro, je suppose mais je ne trouve pas la solution.

Merci de votre aide et de vos solutions.

Michaël.
 

néné06

XLDnaute Accro
Re : Macro suppression sur plusieurs classeurs

Bonjour Mika909 et bienvenue sur le Forum,

Ton problème est réalisable, mais tu devrais nous fournir d'autres renseignements.

-Les noms des trois classeurs.

Le mieux serait les trois classeurs en pièces jointes, avec un peu de données "Bidons".

A te relire.

René
 

mika909

XLDnaute Nouveau
Re : Macro suppression sur plusieurs classeurs

Bonjour René et merci pour le retour.

Voici des fichiers en exemple. Ce sont des bases mails.

Le fichier base01 contient réellement 575.000 mails
Le fichier base02 contient réellement 700.000 mails
Le fichier desabos contient réellement 350.000 mails

Il faut donc retrouver les adresses du fichier desabos dans les fichiers base01 et base02 et les supprimer tout en les conservant dans le fichier desabos.

Merci pour l'aide.

A bientôt.
 

Pièces jointes

  • base01.xlsx
    9.3 KB · Affichages: 36
  • base02.xlsx
    9 KB · Affichages: 31
  • desabos.xlsx
    9.1 KB · Affichages: 35

Paritec

XLDnaute Barbatruc
Re : Macro suppression sur plusieurs classeurs

Bonjour Mika909 néné le forum
ton dossier en retour
tu décompresses le dossier joint sur ton bureau ou ailleurs
tu dois mettre tes trois fichiers dans le même dossier et tu ouvres le fichier desabos et tu cliques traiter
a+
Papou:eek:
 

Pièces jointes

  • Mika909.zip
    32.8 KB · Affichages: 22
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Macro suppression sur plusieurs classeurs

Re Mika909 le forum
Juste un détail, mais tu n'en avais pas parlé, si les fichiers Base01 et Base02 ont des doublons à supprimer, il faut utiliser plutôt la version desabos V2, je n'y avait pas pensé lorsque j'ai fait ta macro!!!!
a+
Papou:eek:
 

Pièces jointes

  • desabos V2.xlsm
    24.2 KB · Affichages: 34
  • desabos V2.xlsm
    24.2 KB · Affichages: 31
  • desabos V2.xlsm
    24.2 KB · Affichages: 34

mika909

XLDnaute Nouveau
Re : Macro suppression sur plusieurs classeurs

Merci Papou,

J'ai lancé ton outil il y a 4 heures, et cela tourne toujours, pour des bases aussi grosses, tu sais combien de temps environ cela prendra pour le traitement ?

Je te remercie.

A+
 

Paritec

XLDnaute Barbatruc
Re : Macro suppression sur plusieurs classeurs

Re Mika le forum
bah moi j'ai fait des tests chez moi avec 720000 adresses à supprimer j'ai mis 50 secondes mais avec tes deux petits fichiers base01 et base 02 mais tout de même 4 heures cela me parraît bien long est-ce que le fichier ouvert en base et la base 01 ou 02???
a te relire
Papou:eek:
 

mika909

XLDnaute Nouveau
Re : Macro suppression sur plusieurs classeurs

J'ai réessayé Papou, sur 2 ordinateurs différents, un sur windows 7 et l'autre windows 8 et cela tourne dans le vide depuis 2 heures :(

Au bout d'un moment Excel ne répond plus et je dois forcer l'arrêt de l'outil (XL 2010).

Ce n'est pas que je n'ai pas confiance, mais ces bases son la richesse de ma structure et je préfère ne pas les diffuser.
 

néné06

XLDnaute Accro
Re : Macro suppression sur plusieurs classeurs

Bonsoir Mika909, Salut Papou

J'ai une petite idée, pour accélérer ce programme.
Te serait il possible de placer en feuil2 de desabos le fichier base01 et en feuil3 le fichier base02 .

A+

René
 

mika909

XLDnaute Nouveau
Re : Macro suppression sur plusieurs classeurs

Oui cela est possible, mais je ne suis pas très doué en code macro, tu peux me corriger le code ci-dessous pour cette modif, ce serait sympa de ta part, en admettant qu'en feuille 2 ce soit base02 et feuille 3 ce spot base03 .

Je te remercie infiniment.

Michaël.

Sub traiter()
Dim aa, i&, a&, f, adr$, cel As Range, lig&, t$
t = Timer
Application.ScreenUpdating = 0
adr = ThisWorkbook.Path
aa = Feuil1.Range("A1:A" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row)
For Each f In Array("base01.xlsx", "base02.xlsx")
Workbooks.Open adr & "\" & f
With ActiveSheet
For i = 1 To UBound(aa)
1 Set cel = .Columns(1).Find(aa(i, 1), , , xlWhole)
If Not cel Is Nothing Then
lig = cel.Row
.Rows(lig).Delete shift:=xlUp
GoTo 1
End If
Next i
End With
ActiveWorkbook.Close 1
Next f
Application.ScreenUpdating = 1
MsgBox "Traitement Terminé " & Format(Timer - t, "0.00 s"), , "Fin du traitement"
End Sub
 

mika909

XLDnaute Nouveau
Re : Macro suppression sur plusieurs classeurs

Merci, alors j'aissayé et j'ai une erreur dès le début : Erreur de compilation : variable non définie sur la ligne t = timer

Je te joins la capture.

Merci

Capture.jpg
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    46.4 KB · Affichages: 32
  • Capture.jpg
    Capture.jpg
    46.4 KB · Affichages: 27
Haut Bas