formateur informatique

Supprimer les doublons de table Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Supprimer les doublons de table Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Eliminer les doublons de bases de données

Dans cette formation Access, nous souhaitons mettre en pratique les requêtes action afin de purger les tables de leurs enregistrements redondants. Et nous allons le constater, la réalisation n'est pas forcément une mince affaire. Quelques solutions avancées de ci et de là, permettent en effet d'éliminer facilement les lignes en double. Mais en y regardant de plus près, force est de constater que les lignes originales disparaissent elles aussi. L'enjeu consiste donc à supprimer les doublons tout en conservant les originaux.

Base de données source
Pour aborder ces techniques, nous avons besoin d'informations offrant de nombreuses répétitions. C'est pourquoi, nous devons tout d'abord récupérer une source de données existante. Comme vous le savez, le volet des objets Access, sur la gauche de l'écran, liste tous les éléments de la base de données. Et comme vous pouvez le voir, cette petite base n'est constituée que d'une seule table. Elle est nommée Communes.

Elle fera parfaitement l'affaire pour déployer la solution permettant de purger les enregistrements répétés, tout en conservant les originaux.
  • Double cliquer sur la table Communes pour afficher son contenu en mode feuille de données,
Table Access des villes avec de nombreux doublons à éliminer

Cette table archive donc des communes et les codes postaux qui leur sont associés. Plus précisément, il s'agit des villes de la région PACA. Comme l'indique la petite barre de navigation en bas de la fenêtre Access, cette table propose 1003 enregistrements, soit 1003 villes.

En réalité elles sont moins nombreuses, la faute aux redondances. Par exemple, vous constatez rapidement la répétition de la ville d'Aix en Provence. Juste en-dessous, la ville d'Allauch est répétée à deux reprises. Mais attention, toutes ne sont pas de véritables doublons. Pour la ville d'Aix en Provence, on compte une seule réelle répétition. En effet, les autres codes postaux associés diffèrent. C'est ainsi que sont découpées les grandes agglomérations. Nous allons donc devoir faire preuve de finesse pour préserver l'intégrité des données.

Extraire les doublons de tables Access
Access propose un outil fort précieux pour déceler la présence d'enregistrements redondants. Il s'agit de l'assistant requête Trouver les doublons. Nous proposons de l'exploiter pour construire cette requête sélection tout à fait spécifique. Ensuite, l'idée consiste à la convertir en requête suppression pour éliminer ces répétitions de la table d'origine.
  • Fermer la table Communes en cliquant sur la croix de son onglet,
  • Puis, la sélectionner de nouveau dans le volet des objets Access,
  • La copier (CTRL + C) et la coller (CTRL + V),
  • Dans la boîte de dialogue qui suit, la nommer : Communes_secours et valider,
La modification des données par les requêtes action est effectivement irréversible. Est-il nécessaire de le rappeler, Access écrit en temps réel sur le disque dur. Il est donc toujours préférable de réaliser une copie de sauvegarde en amont.
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Dans la section Requêtes du ruban, cliquer sur le bouton Assistant Requête,
  • Dans la boîte de dialogue qui suit, choisir l'assistant Requête Trouver les doublons,
Assistant requête Access pour trouver les doublons de tables
  • Cliquer alors sur le bouton Ok pour démarrer les étapes de l'assistant,
Cette première étape est triviale. Elle consiste à désigner la table à partir de laquelle nous souhaitons déceler et extraire les enregistrements en double. Nous n'avons pas l'embarras et choisissons d'agir sur la table d'origine.
  • Sélectionner la table Communes et cliquer sur le bouton Suivant,
Cette deuxième étape est cruciale. Elle consiste à définir comment doivent être repérées les répétitions. Si nous ne désignons que le champ Commune_nom, la requête considèrera toutes les villes identiques comme des doublons. Or, souvenez-vous de la remarque précédente. Certaines grandes villes sont répétées mais identifiées différemment par leur code postal. La requête doit donc repérer ces redondances sur la paire de champs.
  • Sélectionner le champ Commune_nom et cliquer sur le bouton de la flèche orientée à droite,
  • Sélectionner le champ Commune_dep et cliquer sur le bouton de la flèche orientée à droite,
Assistant requête Access pour repérer les doublons sur plusieurs champs à la fois

Ainsi, nous les basculons tous deux dans la liste de droite. De la sorte, nous indiquons à Access que le repérage des doublons doit se faire sur l'identification des paires strictement identiques.
  • Cliquer sur le bouton Suivant pour poursuivre la construction de la requête,
Cette troisième étape est facultative. Elle permet d'ajouter un niveau de détail supplémentaire à l'extraction, en désignant les champs souhaités.
  • Sélectionner le champ Commune_id et cliquer sur le bouton de la flèche orientée à droite,
  • Puis, cliquer sur le bouton Suivant pour accéder à la dernière étape de l'assistant,
  • Nommer la requête sous le nom : R_doublons_villes, puis cliquer sur le bouton Terminer,
Extraire et afficher doublons de table Access par assistant requête

L'extraction est aussitôt restituée. Et comme vous le constatez, les doublons ont été débusqués avec succès. Souvenez-vous, la ville d'Allauch par exemple, était répétée à deux reprises. La ville d'Aix en Provence apparaissait 6 fois mais avec 5 codes postaux différents. En conséquence, seule l'une d'entre elles émerge avec son double. A juste titre, les 4 autres ne sont pas considérées comme des répétitions. Cette première étape est donc un succès.

Nous souhaitons exploiter le fruit de cette extraction pour éliminer ces doublons de la table Communes.
  • En haut de la fenêtre Access, cliquer sur l'onglet Accueil pour activer son ruban,
  • Tout à fait à gauche du ruban, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir Mode création,
Nous basculons ainsi dans l'éditeur de requête. Et à ce titre, vous notez la complexité de la syntaxe Sql utilisée dans la zone Critères du champ Commune_nom.
  • Dans le ruban contextuel Créer, cliquer sur le bouton Suppression,
Convertir requête Trouver les doublons en requête Supprimer les doublons

Nous modifions ainsi la nature de la requête. Elle n'est plus destinée à extraire les doublons mais à les éliminer de la table Communes. C'est d'ailleurs ce que mentionne la zone Supprimer dans la grille de requête.
  • Enregistrer les modifications (CTRL + S),
Vous notez un changement apparaître dans le volet des objets Access. L'icône accompagnant la requête n'est plus la même. Elle informe désormais sans ambiguïté qu'il s'agit d'une requête suppression et qu'elle doit être exploitée avec prudence.
  • Cliquer alors sur le bouton Exécuter dans le ruban contextuel Créer,
Une alerte apparaît aussitôt. Ces actions ne sont pas anodines en effet. Access indique qu'il s'apprête à détruire 262 enregistrements. Après tout, cela ne semble pas incohérent étant donnée la densité de doublons que nous avons pu remarquer.
  • Valider cette alerte avec le bouton Oui,
Rien ne semble s'être produit. Nous sommes toujours dans la vue de l'éditeur de requête. En effet, la vocation d'une requête Suppression n'est pas d'extraire de l'information. Elle agit sur une table désignée. Nous devons donc ouvrir la table Communes pour constater les résultats.
  • Dans le volet des objets Access, double cliquer sur la table Communes,
A première vue, le résultat semble fantastique. Il ne reste plus que 741 enregistrements sur les 1003 de départ.

Requête Access qui supprime les doublons et les originaux

Mais à y voir de plus près, un détail troublant saute aux yeux. La ville d'Allauch a complètement disparu. La ville d'Aix en Provence listée six fois à l'origine n'est plus proposée qu'à quatre reprises. Pourtant cinq codes postaux explicitement différents étaient clairement identifiés. Cela signifie que l'enregistrement original a été supprimé avec son double.

Les lignes d'opération disparaissent en requête Suppression. Il ne nous a pas été permis de réaliser un regroupement afin de supprimer seulement l'un des enregistrements et non les deux.

Ajouter les enregistrements uniques
La solution consiste donc à poser le raisonnement inverse. Nous proposons de construire une requête capable d'extraire seulement les enregistrements uniques. Nous n'aurons plus qu'à les insérer dans la table Communes, préalablement vidée par une requête suppression.

C'est le langage SQL avec sa clause DISTINCT que nous avions démontrée à l'occasion d'une formation, qui va nous offrir cet exploit en toute simplicité.
  • Fermer la requête R_doublons_villes ainsi que la table Communes,
  • Dans le ruban Créer, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, cliquer sur le bouton Fermer,
Ainsi, nous ne désignons aucune table. De fait, le mode Sql se propose naturellement.
  • Tout à fait à gauche du ruban contextuel Créer, cliquer sur le bouton SQL,
Nous basculons ainsi dans l'éditeur Sql. Le mot clé Select, préfixe de toute requête sélection, est déjà présent.
  • Construire la requête d'extraction en écrivant la syntaxe Sql suivante :
SELECT DISTINCT Commune_nom, Commune_dep FROM Communes_secours;

En SQL, la clause DISTINCT permet d'extraire toutes les valeurs uniques sur la combinaison de champs énumérés. Ici, il s'agit bien de la paire Commune_nom / Commune_dep. Cette extraction a bien lieu à partir de la table Communes_secours (FROM Communes_secours), des enregistrements préservés.
  • Enregistrer cette requête (CTRL + S) sous le nom : R_communes_uniques,
  • Puis, cliquer sur le bouton Exécuter du ruban Créer,
Extraire tous les enregistrements uniques de table Access par requête SQL Distinct

L'extraction est un succès. Seuls résistent 845 communes sur les 1003 de départ. C'est toujours 104 de plus que le résultat livré par la précédente requête Suppression. La ville d'Allauch est bien présente mais une seule fois. Son doublon a été écarté. La ville d'Aix en Provence est bien répétée à cinq reprises, conformément aux cinq codes postaux différents.

Avant de songer à insérer ces données purgées de leurs doublons dans la table Communes, nous devons la vider de ses anciennes valeurs. Pour cela, une requête Suppression sans critère, fera parfaitement l'affaire.
  • Fermer la requête R_communes_uniques en cliquant sur la croix de son onglet,
  • Dans le ruban Créer, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, sélectionner la table Communes,
  • Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
  • Dans la représentation de la table, double cliquer sur le champ Commune_id,
  • Dans le ruban contextuel Créer, cliquer sur le bouton Suppression,
Requête Access suppression pour vider complètement une table

Nous transformons ainsi la requête sélection en requête suppression. Comme aucun critère n'est stipulé, elle doit agir sur tous les enregistrements de la table Communes. Donc, elle doit les supprimer tous.
  • Enregistrer la requête (CTRL + S) sous le nom : R_Suppr_communes,
  • Cliquer ensuite sur le bouton Exécuter du ruban contextuel Créer,
  • Valider le message d'avertissement avec le bouton Oui,
  • Puis, double cliquer sur la table Communes pour afficher son contenu,
Plus aucune commune n'y est désormais référencée. La table est complètement vidée. Nous allons donc pouvoir procéder à l'insertion des enregistrements uniques, issus de la requête R_communes_uniques, agissant sur la table Communes_secours. Et c'est une nouvelle requête action qui va nous permettre d'automatiser cette tâche. Il s'agit de la requête Ajout.
  • Fermer la table Communes ainsi que la requête R_Suppr_communes,
  • Dans le ruban Créer, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui apparaît, activer l'onglet Requêtes,
  • Sélectionner la requête R_communes_uniques,
  • Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
Créer une requête Ajout sur une autre requête Access

Ce sont en effet les résultats de l'extraction d'une requête que nous souhaitons ajouter dans une nouvelle table.
  • Dans le ruban contextuel Créer, cliquer sur le bouton Ajout,
Choisir table de réception pour requête Access Ajout de données
  • Dans la boîte de dialogue qui suit, désigner la table Communes avec la liste déroulante,
  • Puis, valider avec le bouton Ok,
  • Dans la représentation de la table, double cliquer sur le champ Commune_nom,
  • De la même façon, double cliquer sur le champ Commune_dep,
Nous les ajoutons ainsi sur la grille de requête.

Correspondance des champs dans requête Ajout Access pour insérer les données de table

Comme vous pouvez le voir, du fait de la correspondance des noms de champs, la zone Ajouter à, spécifique à cette requête, se cale automatiquement. C'est bien le résultat de l'extraction sur le champ Commune_nom de la requête que nous souhaitons insérer dans le champ Commune_nom de la table Communes. Et c'est bien l'extraction sur le champ Commune_dep que nous souhaitons insérer dans le champ Commune_dep de destination.
  • Enregistrer la requête sous le nom : R_AJ_villes_uniques,
  • Puis cliquer sur le bouton Exécuter dans le ruban contextuel Créer,
  • Valider le message d'avertissement par Oui et ouvrir la table Communes,
Table Access purgée de tous ces doublons par exécution de plusieurs requêtes

La table précédemment vidée contient désormais 845 enregistrements sur les 1003 communes référencées à l'origine. Seules subsistent les paires uniques. La ville d'Allauch n'est plus répétée. La ville d'Aix en Provence est purgée de son seul doublon puisque les autres sont associées à des codes postaux différents. Nous l'avons remplie de valeurs uniques. En d'autres termes, nous avons livré la solution pour purger une table Access de ses doublons par les requêtes.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn