Excel VBA - Union et intersection

Excel VBA a deux méthodes, appartenant à l'objet Application, pour manipuler deux ou plusieurs plages : Union et Intersect.

syndicat

La méthode Union renvoie toutes les cellules dans deux ou plusieurs plages passées en argument.

La commande suivante sélectionnera la plage affichée dans l'image ci-dessous :

1 Union(Plage("A1:B4"),Plage("B3:C6")).Sélectionnez

Vous pouvez affecter n'importe quelle valeur ou formule à la plage renvoyée par la méthode Union :

1 Union(Plage("A1:B4"), Plage("B3:C6")) = 10

Cela entrera la valeur 10 dans chaque cellule de l'Union.

Vous pouvez envelopper n'importe quelle fonction qui résume une plage autour d'une méthode Union. L'exemple suivant renverra la somme des valeurs des plages A1:B4 et B3:C6 :

1 Résultat = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6")))

Vous pourriez être surpris d'obtenir une valeur de 160 ! Bien qu'il n'y ait que 14 cellules dans l'Union (8 dans chaque plage, 2 étant communes) lorsque vous regardez la sélection, l'Union renvoie en fait 16 cellules, d'où le résultat 160.

Couper

La méthode Intersect renvoie uniquement les cellules communes dans deux ou plusieurs plages passées en argument.

La commande suivante sélectionnera la plage affichée (zone grise) dans l'image ci-dessous :

1 Intersection(Plage("A1:B4"),Plage("B3:C6")).Sélectionnez

Utilisation de l'intersection

L'utilisation la plus courante d'Intersect concerne les événements associés à une feuille de calcul ou un classeur. Il est utilisé pour tester si la ou les cellules modifiées appartiennent à une plage d'intérêt. Exemple suivant avec vérifier si la ou les cellules modifiées (identifiées par la cible) et la plage A1:A10 sont communes et prendre les mesures appropriées si elles le sont.

L'objet Intersect ne renvoie rien s'il n'y a pas de cellules communes, donc Intersect(Target, Range ("A1:A10")) Is Nothing sera True s'il n'y a pas de cellules communes. L'ajout de Not à la condition ne la rend vraie que si le résultat du test Intersect(Target, Range ("A1:A10")) Is Nothing is False, en d'autres termes Target et Range A1:A10 ont des cellules en commun.

12345 Private Sub Worksheet_Change (ByVal Target As Range)Si pas d'intersection (cible, plage ("A1:A10")) n'est rien alors' Prendre l'action souhaitéeFin siFin du sous-marin

Écrit par : Vinamra Chandra

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

wave wave wave wave wave