Extraire des données et nettoyer un tableau
Bonjour,
En train de faire mes premiers pas avec le VBA, j'ai du mal à construire mes deux premières macro (j'ai dans un premier temps utilisé l'enregistreur pour me donner des pistes mais rien n'y fait).
MACRO 1
Très régulièrement, j'extrais une base de données construite au même format (fichier "base données type" ci-joint). L'objectif de cette macro 1 serait de filtrer les colonnes "ENVOI_RESULT_TYPE" et "EST_DESINSCRIT", que j'ai mis en rouge dans ce fichier exemple:
- Pour la colonne "ENVOI_RESULT_TYPE", je souhaiterais isoler les "Rejet Définitifs". Une fois ce filtre en place, je souhaiterais copier uniquement les adresses emails concernées (colonne "email") et les ajouter à la suite d'un fichier B existant (ce dernier n'a qu'une colonne intitulée "email").
- Pour la colonne "EST_DESINSCRIT", je souhaiterais isoler "VRAI", puis procéder comme ci-dessus (isoler les adresses emails concernées et les copier/coller à la suite de la colonne "email" du fichier B déjà existant.
Par ailleurs, après ces deux premières étapes d'extraction vers le fichier B, je souhaiterais:
- supprimer du fichier "base données type" les adresses emails isolées précédemment ("rejet définitif "et "est désinscrit")
- isoler les adresses emails concernées par la colonne "A_CLIQUE_MESSAGE">FAUX et par la colonne "A_VU_MESSAGE">FAUX
- transformer ce fichier "base données type" de telle sorte à n'obtenir qu'une seule colonne intitulé "email" (et qui ne contiendrait donc que les adresses concernées par les colonnes et filtres "A_CLIQUE_MESSAGE">FAUX et "A_VU_MESSAGE">FAUX)
- supprimer les doublons présents dans cette unique colonne restante
MACRO 2:
Le but de cette macro serait de supprimer d'un fichier C les emails contenus dans le fichier "base données type" . Tout comme le fichier "base données type" transformé, le fichier C n'a aussi qu'une seule colonne intitulée "email".
Habituellement, je réalise cette action par le biais d'une recherche v. Seulement, certains de mes fichiers contiennent plus de 100 000 adresses, et Excel rame énormément pour effectuer les sélections et suppressions.
Est-ce-que tout ça semble réalisable (et suffisamment clair)?
Un grand merci d'avance pour votre aide!
Bonjour,
Réponse pour la macro 1 si j'ai bien compris la chose.
Tu dois avoir un classeur nommé 'Emails.xlsx' dans le même dossier que ton fichier.
ALT F8 et exécuter Traitement_donnees.
Attention : le fichier initial est écrasé. Travailler sur une copie du fichier réel (pour les test).
A te relire.
Cdlt.
Re,
J'avais oublié de supprimer les doublons!
Ajouter la ligne surlignée ci-dessous.
Cdlt.
' 7 - suppression feuille 'Base donnee type' et enregistrement fichier
ws2.Name = "Adresses Emails"
ws2.Cells(1, 1).CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
wb.SaveMille mercis Jean-Eric, je vais faire les tests et grâce à ça essayer de mieux comprendre le code VBA.
Excellente journée,
Hélène