Comparer les plages dans Excel VBA
Ci-dessous, nous examinerons un programme en Excel VBA cette compare sélectionné aléatoirement gammes et met en évidence les cellules qui sont uniques. Si vous ne connaissez pas encore les zones, nous vous recommandons vivement de lire d'abord cet exemple.
Situation:
Remarque: la seule valeur unique dans cet exemple est la valeur 3, car toutes les autres valeurs apparaissent dans au moins une zone supplémentaire. Pour sélectionner la plage ("B2: B7, D3: E6, D8: 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 suivantes:
1. Dans un premier temps, nous déclarons quatre objets Range et deux variables de type Integer.
2. Nous initialisons l'objet Range RangeToUse avec la plage sélectionnée.
3. Ajoutez la ligne qui modifie la couleur d'arrière-plan de toutes les cellules en "Pas de remplissage". Ajoutez également la ligne qui supprime les bordures de toutes les cellules.
Cells.Borders.LineStyle = xlNone
4. Informez l'utilisateur lorsqu'il ne sélectionne qu'une zone.
MsgBox "Please select more than one area."
Else
End If
Les lignes de code suivantes (en 5, 6 et 7) doivent être ajoutées entre Else et End If.
5. Colorez les cellules des zones sélectionnées.
6. Border chaque zone.
singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
Next singleArea
7. Le reste de ce programme se présente comme suit.
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 difficile, mais ce n’est pas si difficile. rangeToUse.Areas.Count est égal à 3, de sorte que les deux premières lignes de code se réduisent à Pour i = 1 à 3 et Pour j = i + 1 à 3. Pour i = 1, j = 2, Excel VBA compare toutes les valeurs de la première zone à toutes les valeurs de la deuxième zone.Pour i = 1, j = 3, Excel VBA compare toutes les valeurs de la première zone à toutes les valeurs de la troisième zone. i = 2, j = 3, Excel VBA compare toutes les valeurs de la deuxième zone à toutes les valeurs de la troisième zone. Si les valeurs sont identiques, la couleur d'arrière-plan des deux cellules est définie sur "Pas de remplissage", car elles ne sont pas uniques. .
Résultat lorsque vous cliquez sur le bouton de commande de la feuille: