Ci-dessous, nous examinerons un programme dans Excel VBA qui compare les plages sélectionnées au hasard et met en évidence les cellules qui sont uniques. Si vous n’êtes pas familier avec lien: / vba-exemples-zones de collecte [zones] encore, nous vous recommandons fortement de lire cet exemple d’abord.

Situation:

Compare Ranges in Excel VBA

Note: la seule valeur unique dans cet exemple est le 3 puisque toutes les autres valeurs se produisent dans au moins une autre zone. Pour sélectionner Range ( « B2: B7, D3: E6, J8: E9 »), maintenez la touche Ctrl enfoncée et sélectionnez chaque zone.

Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivant:

  1. Tout d’abord, nous déclarons quatre objets Range et deux variables de type entier.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
  1. Nous initialisons l’objet Range rangeToUse avec la plage sélectionnée.

Set rangeToUse = Selection
  1. Ajoutez la ligne qui change la couleur de fond de toutes les cellules à « Aucun remplissage ». Ajoutez également la ligne qui supprime les frontières de toutes les cellules.

Cells.Interior.ColorIndex = 0

Cells.Borders.LineStyle = xlNone
  1. Informer l’utilisateur quand il ou elle sélectionne une seule zone.

If Selection.Areas.Count <= 1 Then

MsgBox "Please select more than one area."

Else

End If

Les lignes suivantes de code (à 5, 6 et 7) doivent être ajoutés entre Else et End If.

  1. Couleur les cellules des zones sélectionnées.

rangeToUse.Interior.ColorIndex = 38
  1. Border chaque zone.

For Each singleArea In rangeToUse.Areas

singleArea.BorderAround ColorIndex:=1, Weight:=xlThin

Next singleArea
  1. Le reste de ce programme semble que suit.

For i = 1 To rangeToUse.Areas.Count

For j = i + 1 To rangeToUse.Areas.Count

For Each cell1 In rangeToUse.Areas(i)

For Each cell2 In rangeToUse.Areas(j)

If cell1.Value = cell2.Value Then

cell1.Interior.ColorIndex = 0

cell2.Interior.ColorIndex = 0

End If

Next cell2

Next cell1

Next j

Next i

Explication: cela peut sembler un peu écrasante, mais il est pas si difficile. rangeToUse.Areas.Count est égal à 3, de sorte que les deux premières lignes de code à réduire pour i = 1 à 3 et j = i + 1 à 3. Pour i = 1, j = 2, Excel VBA compare toutes les valeurs de la première zone avec toutes les valeurs de la seconde zone. Pour i = 1, j = 3, Excel VBA compare toutes les valeurs de la première zone avec toutes les valeurs de la troisième zone. Pour i = 2, j = 3, Excel VBA compare toutes les valeurs de la seconde zone avec toutes les valeurs de la troisième zone. Si les valeurs sont les mêmes, il définit la couleur d’arrière-plan des deux cellules « Aucun remplissage », parce qu’ils ne sont pas uniques.

Lorsque vous cliquez sur le bouton de commande sur la feuille:

Compare Ranges Result