Distance problems with I2C connection for multiple devices
IIC is fairly high impedance due to being passively pulled up and that the pulldown current must be rather small.  The pullups are usually a few k&Omega; minimum, which is the impedance of the lines when idle.  This is usually fine on a single board above a consistent ground plane, but extending such lines 5 meters is asking for trouble.  If you really have to do this, make the data rate low and encapsulate every packet with a checksum.

Ultimately you end up trading data rate with reliability.  You can probably get away with 100 kBit/s or so (just guessing).  That would give the lines 5 &micro;s to settle after each edge before they should be looked at.

A probably better option would be to use CAN.  100 devices is getting near the limit but is still within spec.  The common MCP2551 is specified to support 112 devices, for example.  CAN is a differential bus with 120 &Omega; pull-together resistors at each end.  The differential nature and much lower impedance (60 &Omega;) make is suitable for going off board.  It was initially designed for use in cars, which are notorious for being electrically noisy.

5 meters is short for CAN.  If you use the right twisted pair, daisy chain topology, and properly terminate the bus at each end, you should be able to do 1 MBit/s without problems.

Another advantage of CAN is that silicon to implement the low levels of the protocol is built into many microcontrollers.  The lowest level firmware sends and receives whole packets.  The hardware takes care of encoding the data onto the wire, collision detection with backoff and retry, and checksum generation and validation.