Suppression des valeurs en double dans Excel VBA

Ce didacticiel montrera comment supprimer les doublons à l'aide de la méthode RemoveDuplicates dans VBA.

Méthode RemoveDuplicates

Lorsque des données sont importées ou collées dans une feuille de calcul Excel, elles peuvent souvent contenir des valeurs en double. Vous devrez peut-être nettoyer les données entrantes et supprimer les doublons.

Heureusement, il existe une méthode simple dans l'objet Range de VBA qui vous permet de le faire.

1 Plage ("A1:C8").Supprimer les colonnes en double :=1, en-tête :=xlOui

La syntaxe est :

Supprimer les doublons([Colonnes],[En-tête]

  • [Colonnes] - Spécifiez quelles colonnes sont vérifiées pour les valeurs en double. Toutes les colonnes correspondent bien pour être considérées comme un doublon.
  • [Entête] - Les données ont-elles un en-tête ? xlNo (par défaut), xlYes, xlYesNoGuess

Techniquement, les deux paramètres sont facultatifs. Cependant, si vous ne spécifiez pas l'argument Colonnes, aucun doublon ne sera supprimé.

La valeur par défaut pour l'en-tête est xlNo. Bien sûr, il est préférable de spécifier cet argument, mais si vous avez une ligne d'en-tête, il est peu probable que la ligne d'en-tête corresponde en tant que doublon.

Supprimer les doublons Notes d'utilisation

  • Avant d'utiliser la méthode RemoveDuplicates, vous devez spécifier une plage à utiliser.
  • La méthode RemoveDuplicates supprimera toutes les lignes contenant des doublons trouvés, mais conservera la ligne d'origine avec toutes les valeurs.
  • La méthode RemoveDuplicates ne fonctionne que sur les colonnes et non sur les lignes, mais du code VBA peut être écrit pour rectifier cette situation (voir plus loin).

Exemples de données pour les exemples VBA

Afin de montrer comment fonctionne l'exemple de code, les exemples de données suivants sont utilisés :

Supprimer les lignes en double

Ce code supprimera toutes les lignes en double en fonction uniquement des valeurs de la colonne A :

123 Sous SupprimerDupsEx1()Plage ("A1:C8").Supprimer les colonnes en double :=1, en-tête :=xlOuiFin du sous-marin

Notez que nous avons explicitement défini la plage "A1:C8". Au lieu de cela, vous pouvez utiliser le UsedRange. Le UsedRange déterminera la dernière ligne et colonne utilisées de vos données et appliquera RemoveDuplicates à toute cette plage :

123 Sous-SupprimerDups_UsedRange()ActiveSheet.UsedRange.RemoveDuplicates Colonnes :=1, En-tête :=xlYesFin du sous-marin

UsedRange est incroyablement utile, vous évitant de définir explicitement la plage.

Après avoir exécuté ce code, votre feuille de calcul ressemblera maintenant à ceci :

Notez que parce que seule la colonne A (colonne 1) a été spécifiée, le doublon « Pommes » précédemment dans la ligne 5 a été supprimé. Cependant, la Quantité (colonne 2) est différente.

Pour supprimer les doublons, en comparant plusieurs colonnes, nous pouvons spécifier ces colonnes à l'aide d'une méthode Array.

Supprimer les doublons en comparant plusieurs colonnes

123 Sub RemoveDups_MultColumns()ActiveSheet.UsedRange.RemoveDuplicates Columns:=Array(1, 2) , Header:=xlYesFin du sous-marin

Le tableau indique à VBA de comparer les données en utilisant les deux colonnes 1 et 2 (A et B).

Il n'est pas nécessaire que les colonnes du tableau soient dans un ordre consécutif.

123 Sous-exemple simple()ActiveSheet.UsedRange.RemoveDuplicates Columns:=Array(3, 1) , Header:=xlYesFin du sous-marin

Dans cet exemple, les colonnes 1 et 3 sont utilisées pour la comparaison des doublons.

Cet exemple de code utilise les trois colonnes pour rechercher les doublons :

123 Sous-exemple simple()ActiveSheet.UsedRange.RemoveDuplicates Columns:=Array(1, 2, 3) , Header:=xlYesFin du sous-marin

Supprimer les lignes en double d'une table

Les RemoveDuplicates peuvent également être appliqués à un tableau Excel exactement de la même manière. Cependant, la syntaxe est légèrement différente.

1234 Sous-exemple simple()ActiveSheet.ListObjects("Table1").DataBodyRange.RemoveDuplicates Columns :=Array(1, 3), _En-tête : =xlOuiFin du sous-marin

Cela supprimera les doublons dans le tableau basé sur les colonnes 1 et 3 (A et C). Cependant, cela ne règle pas la mise en forme des couleurs du tableau et vous verrez des lignes vides colorées laissées au bas du tableau.

Supprimer les doublons des baies

Si vous devez supprimer les valeurs en double d'un tableau, vous pouvez bien sûr générer votre tableau dans Excel, utiliser la méthode RemoveDuplicates et réimporter le tableau.

Cependant, nous avons également écrit une procédure VBA pour supprimer les doublons d'un tableau.

Supprimer les doublons de lignes de données à l'aide de VBA

La méthode RemoveDuplicates ne fonctionne que sur des colonnes de données, mais avec une certaine réflexion « out of the box », vous pouvez créer une procédure VBA pour traiter les lignes de données.

Supposons que vos données ressemblent à ceci sur votre feuille de calcul :

Vous avez les mêmes doublons que précédemment dans les colonnes B et E, mais vous ne pouvez pas les supprimer à l'aide de la méthode RemoveDuplicates.

La réponse consiste à utiliser VBA pour créer une feuille de calcul supplémentaire, à y copier les données en les transposant en colonnes, à supprimer les doublons, puis à les recopier en les transposant en lignes.

12345678910111213141516171819202122232425262728293031323334353637 Sous-doublonsInRows()'Désactiver la mise à jour de l'écran et les alertes - nous voulons que le code s'exécute correctement sans que l'utilisateur ne voie'que se passe-t-ilApplication.ScreenUpdating = FauxApplication.DisplayAlerts = Faux'Ajouter une nouvelle feuille de calculSheets.Add After :=ActiveSheet'Appelez la nouvelle feuille de calcul 'CopySheet'ActiveSheet.Name = "Copier la feuille"'Copier les données de la feuille de calcul d'origineSheets("DataInRows").UsedRange.Copy'Activer la nouvelle feuille qui a été crééeSheets("CopySheet").Activer'Coller transposer les données pour qu'elles soient maintenant en colonnesActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _Faux, transposer : = vrai'Supprimer les doublons pour les colonnes 1 et 3Colonnes ActiveSheet.UsedRange.RemoveDuplicates : = Array (1, 3), en-tête _:=xlOui'Effacer les données dans la feuille de calcul d'origineSheets("DataInRows").UsedRange.ClearContents'Copier les colonnes de données de la nouvelle feuille de calcul crééeSheets("Copysheet").UsedRange.Copy'Activer la feuille d'origineSheets("DataInRows").Activer'Coller transposer les données non dupliquéesActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _Faux, transposer : = vrai'Supprimer la feuille de copie - n'est plus nécessaireSheets("Copysheet").Supprimer'Activer la feuille d'origineSheets("DataInRows").Activer'Réactiver la mise à jour de l'écran et les alertesApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueFin du sous-marin

Ce code suppose que les données d'origine dans les lignes sont conservées dans une feuille de calcul appelée « DataInRows »

Après avoir exécuté le code, votre feuille de calcul ressemblera à ceci :

Le doublon « Pommes » dans la colonne E a maintenant été supprimé. L'utilisateur est de retour dans une position propre, sans feuilles de calcul superflues qui traînent, et l'ensemble du processus s'est déroulé en douceur, sans scintillement de l'écran ni message d'avertissement.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave