Comparer les plages dans Excel VBA - Macros Excel faciles

Table des matières

Ci-dessous, nous examinerons un programme en Excel VBA ce compare sélectionné aléatoirement gammes et met en évidence les cellules qui sont uniques. Si vous n'êtes pas encore familiarisé avec les zones, nous vous recommandons fortement de lire cet exemple en premier.

Situation:

Remarque : la seule valeur unique dans cet exemple est le 3, car toutes les autres valeurs apparaissent dans au moins une zone supplémentaire. Pour sélectionner 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. Tout d'abord, nous déclarons quatre objets Range et deux variables de type Integer.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Nous initialisons l'objet Range rangeToUse avec la plage sélectionnée.

Définir rangeToUse = Sélection

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.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Informez l'utilisateur lorsqu'il sélectionne une seule zone.

Si Selection.Areas.Count <= 1 Then
MsgBox "Veuillez sélectionner plus d'une zone."
Autre
Fin si

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

5. Colorez les cellules des zones sélectionnées.

rangeToUse.Interior.ColorIndex = 38

6. Bordez chaque zone.

Pour chaque singleArea dans rangeToUse.Areas
singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
SuivantArea

7. Le reste de ce programme se présente comme suit.

Pour i = 1 Pour rangeToUse.Areas.Count
Pour j = i + 1 Pour rangeToUse.Areas.Count
Pour chaque cellule1 dans rangeToUse.Areas(i)
Pour chaque cellule2 dans rangeToUse.Areas(j)
Si cellule1.Valeur = cellule2.Valeur Alors
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Fin si
Cellule suivante2
Cellule suivante1
j suivant
Ensuite je

Explication : cela peut sembler un peu écrasant, mais ce n'est pas si difficile. rangeToUse.Areas.Count est égal à 3, donc les deux premières lignes de code se réduisent à For i = 1 à 3 et For 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 deuxième 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 deuxième zone avec 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 sur la feuille :

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

wave wave wave wave wave