Use a Unit Indexer and set Bureau1[Bureau1Count] to Bureau1[custom value of last created unit]. Then do the same for Bureau2.
The way you're doing it now will have all sorts of problems.
Example:
You create an Elf Bureau 2 -> Bureau1Count and Bureau2Count is now equal to 1.
You create another Elf Bureau 2 -> Bureau1Count and Bureau2Count is now equal to 2.
You create another Elf Bureau 2 -> Bureau1Count and Bureau2Count is now equal to
3.
Then you destroy ANY of the Elf Bureaus -> The trigger kills Bureau1[Bureau1Count] and Bureau2[Bureau2Count] and since both Bureau1Count and Bureau2Count are equal to
3 then only the #
3 ones will die.
Then you subtract 1 from Bureau1 and 2 Count making them equal to 2. Meaning that if you were to destroy ANY Elf Bureau it will now kill the ones with BureaCount 2.
You're not actually linking these values to your buildings, they're simply stored in the order that they were created. That's why I'd recommend using a Unit Indexer, it does almost exactly what you're trying to do here. Search for "GUI Unit Indexer", Bribe has a good one on here. It's very easy to copy and paste into your map, it's just one trigger that will Index (store a unique custom value) to all of the units in your map. You can then reference your units Custom Value to do just about anything.
Also, this action leaks "Create 1 Night Elf at Position of (Constructing structure)" and will slow your game down. The position of constructing structure is what causes the leak, because it's a point that is stored in the game's memory and never removed. Try this instead:
-
Point Leak
-

Events
-

Conditions
-

Actions
-


Set Point = (Position of (Constructing structure))
-


Unit - Create 1 Night Elf for Player 1 (Red) at Point facing Default building facing degrees
-


Unit - Create 1 Sun Elf for Player 1 (Red) at Point facing Default building facing degrees
-


Custom script: call RemoveLocation (udg_Point)
In the example above, we're setting the position of our constructing structure to a Point variable. Now the game has stored this Point into it's memory. After creating our two buildings we no longer need that Point, so we remove it using this Custom script. This tells the game that it no longer has to remember that Point and can get rid of it. Luckily, we can keep creating, using, and destroying this Point as much as we want. Just remember to ALWAYS remove the Point before you use it again.
I suggest searching for "things that leak". The main things that you'll probably use often which leak: Points, Unit Groups, and Special Effects.