Comparer 2 listes avec une macro

Maryloo2005

XLDnaute Nouveau
Bonjour,
Je suis nouvelle dans ce forum. J'ai un problème que je sais résoudre mais qu'il faudrait transposer en macro pour que ce tableau puisse être utilisé par une tierce personne utilisatrice d'Excel mais sans compétence informatique.
Moi, je connais Excel mais pas les macros. J'ai essayé mais cela a buggé...
En fait, chaque semaine, on reçoit des pièces à réparer (colonne K : Reperation_Entry_Date), on doit pouvoir savoir s'il y a des références nouvelles (colonne D : Reference_Watch) par rapport à toutes les références qui existaient déjà avant.
Chaque semaine, la personne utilisatrice du tableau recevra la base de données complète (feuille Reperation). Dans le doc joint, j'ai vidé les données des colonnes qui ne nous servent à rien et je n'ai laissé qu'une année pour alléger le fichier mais la base reçue est normalement complètement remplie pour 5 ans, donc très lourde.
Chaque semaine, de nouvelles lignes s'ajoutent à la base.
L'idéal serait que la personne utilisatrice n'ait qu'à entrer le jour de début de la semaine et le jour de fin de la semaine dans 2 cellules, puis elle cliquerait sur un bouton qui déclencherait la macro et elle pourrait lire, dans une 2e feuille (ou dans un autre classeur ?), les nouvelles références.
Ensuite, je pense qu'il faut faire les manipulations suivantes, et c'est cela que je n'arrive pas à automatiser :
1. En V1 et en W1 copier-coller (sans les guillemets) "Reperation_Entry_Date". La personne utilisatrice aura juste à saisir (sans les guillemets) ">=13/04/2015" en V2 et "<=19/04/2015" en W2, par exemple pour la semaine 16. Bien sûr, elle aura une nouvelle base chaque semaine et elle changera ces dates chaque semaine.
2. Dans la base, supprimer toutes les colonnes inutiles et ne conserver que les colonnes D et K qui deviennent donc les colonnes A et B.
3. Trier dans l'ordre croissant A à Z des Reperation_Entry_Date.
4. Filtrer la semaine. Pour l'exemple cité ci-dessus : semaine du 13/04 au 19/04/2015 (ou semaine 16), je pensais faire un filtre avancé avec la base complète (colonnes A et B) et la zone de critères (D1 à E2), à filtrer sur place.
5. Cela nous donne uniquement les lignes pour la semaine. Copier-coller ce résultat (colonnes A et B) dans la cellule A1 d'une nouvelle feuille du classeur qui, idéalement serait à nommer "semaine 16"mais je pense que cela n'est pas possible avec la macro. Si ce n'est pas possible, ce n'est pas grave, l'utilisatrice pourra à la fin renommer cette Feuil2 "semaine 16".
6. Revenir dans la première feuille "Reperation" et supprimer les lignes filtrées de la base (il faut sélectionner toutes les lignes apparentes, sauf la ligne des titres puis supprimer ces lignes).
7. Effacer le filtre de la base Reperation. Cela nous laisse la base complète, débarrassée des lignes de la semaine 16.
8. Trier sur la colonne A (Reference_Watch) dans l'ordre croissant A à Z.
9. Se replacer dans la Feuil2. En B2, supprimer le contenu de la cellule et entrer la formule suivante =RECHERCHEV(A2;Reperation!A:B;2;FAUX) puis recopier cette formule vers le bas. Cela va remplacer les dates qui apparaissaient dans ces cellules.
10. Les nouvelles références sont celles pour lesquelles apparaît le message d'erreur #N/A.
11. Filtrer en colonne B pour ne faire apparaître que les #N/A. Masquer la colonne B. Enlever les doublons avec Données/ Supprimer les doublons.
12. On obtient ainsi la liste des nouvelles références apparues en semaine 16. Chaque semaine, on devra noter les dates de la semaine et lancer la macro pour refaire l'extraction.
J'espère que je me suis fait comprendre. Peut-être existe-t-il une méthode plus simple ?
Ci-joint le fichier concerné. Je vous remercie d'avance de voir si c'est possible d'automatiser cela, afin que cela soit simple d'utilisation.
Merci d'avance !
Mary
 

Pièces jointes

  • GESTION_ANTICIP_original LIGHT.xlsx
    276.8 KB · Affichages: 36
  • GESTION_ANTICIP_original LIGHT.xlsx
    276.8 KB · Affichages: 82
  • GESTION_ANTICIP_original LIGHT.xlsx
    276.8 KB · Affichages: 44

Iznogood1

XLDnaute Impliqué
Re : Comparer 2 listes avec une macro

Un bien long discours...
Pas sûr d'avoir saisi ton besoin.

Si j'ai bien compris, tu veux identifier rapidement les références des pièces apparues dans la base dans une période donnée ?
 

Jacou

XLDnaute Impliqué
Re : Comparer 2 listes avec une macro

Bonsoir Maryloo, bonsoir Iznogood

Maryloo, je ne suis pas sûr moi non plus d'avoir tout compris (en général je comprends vite, mais il faut m'expliquer très longtemps lol).

la formule que j'ai mise en colonne E ne répondrait-elle pas à ce que tu cherches à savoir ? (et il n'y a pas de macro)

Bonne nuit
Jacou

PS j'ai supprimé quelques lignes par rapport au fichier d'origine car sinon il dépasse les limites autorisées pour le PJ
 

Pièces jointes

  • GESTION_ANTICIP_original LIGHT.xlsx
    254.6 KB · Affichages: 30
  • GESTION_ANTICIP_original LIGHT.xlsx
    254.6 KB · Affichages: 66
  • GESTION_ANTICIP_original LIGHT.xlsx
    254.6 KB · Affichages: 43

chris

XLDnaute Barbatruc
Re : Comparer 2 listes avec une macro

Bonjour

Salut à Iznogood1 et Jacou

Ayant compris la même chose que Jacou, je propose 2 solutions sur la base d'un tableau croisé.

Sachant que le fichier est, si j'ai bien compris, écrasé chaque semaine, je bâtirais l'analyse dans un autre fichier qui puiserait les données du 1er.


  1. On peut établir une liaison simple avec les données du premier classeur :
    • cela donne un tableau avec toutes les colonnes.
    • Sont ajoutées 2 colonnes : Nouveau (même principe que Jacou) et copie de la date.
      A noter que ces colonnes s'actualisent automatiquement en fonction du nombre de lignes de la source.
    • un TCD restitue les nouvelles références et des segments permettent de sélectionner d'un clic l'année et la semaine concernée
    • Dans cette solution, le seul souci est de classer les données sources : faisable par une ligne de macro
  2. On peut établir la liaison par une requête MSQUERY :
    • celle-ci n'importe que les colonnes souhaitées et déjà triées dans un tableau.
    • Sont ajoutées les mêmes colonnes que dans la solution 1
    • On utilise le même TCD
    • Dans cette solution pas de problème de tri

La seconde solution donne un fichier plus léger (moins de colonnes) mais autant de formules.
Dans les deux cas, le fichier source doit toujours être au même endroit car le chemin est enregistré dans la liaison.
On peut éventuellement par macro, actualiser le TCD et adapter le chemin si la source doit se déplacer ...
 

Pièces jointes

  • GESTION_ANTICIP_Analyse1&2.zip
    684.5 KB · Affichages: 46
Dernière édition:

Maryloo2005

XLDnaute Nouveau
Re : Comparer 2 listes avec une macro

Bonsoir Iznogood1 et merci pour ta réponse-question,
Je ne réponds que ce soir car j'étais indisponible hier.
Chaque semaine, ma base grandit avec des références de pièces apparues dans cette semaine (exemple la semaine 16 du 13/4 au 19/4/2015) et je voudrais savoir si ces pièces ont déjà été reçues par le passé ou sont de nouvelles références. Est-ce que je me fais bien comprendre ou pas ? Merci encore. Mary
 

Maryloo2005

XLDnaute Nouveau
Re : Comparer 2 listes avec une macro

Merci Jacou pour ta réponse et ta pièce jointe,
Je pense que tu peux voir la réponse que j'ai faite à Iznogood1 ? Je veux seulement savoir quelles sont les nouvelles pièces arrivées cette semaine et qui n'ont jamais été reçues auparavant.
Mary
 

Maryloo2005

XLDnaute Nouveau
Re : Comparer 2 listes avec une macro

Bonsoir Chris et merci pour ta réponse et ton fichier joint,
Ca a l'air de bien fonctionner sur xls 2013. Je ne sais pas si les Segments existaient sur la version 2010 (version sur laquelle le travail doit être fait)... Le fichier que j'ai envoyé était très petit. En réalité la base existe depuis 2011 et fait plus de 200 000 lignes au 20/4 et elle grossit de centaines de lignes chaque jour ! C'est très lourd ! J'espère que ça ne gênera pas le traitement.
Merci et bonsoir, c'est vraiment sympa de votre part.
 

Discussions similaires

Réponses
5
Affichages
293

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510