Oui j'y avais penser aussi à la Mega mais je me suis dit que ça serait vraiment au cas ou si je galère vraiment avec les multiplexeurs ...
Au niveau du code j'ai commence à l'écrire mais je n'ai strictement aucune idée de si j'ai fais les choses bien lol je vous laisse vous foutre de moi ... 
#define pinS0 2
#define pinS1 3
#define pinS2 4
int pot1, pot2, pot3, pot4, pot5, pot6, pot7, pot8, pot9, pot10, pot11, pot12, pot13, pot14, pot15, pot16, sw1, sw2, sw3, sw4, sw5, sw6, sw7, sw8, sw9, sw10, sw11, sw12, sw13, sw14, sw15
void setup(){
Serial.begin(31250);
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
pot1 = analogRead(A0)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
pot2 = analogRead(A0)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
pot3 = analogRead(A0)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
pot4 = analogRead(A0)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
pot5 = analogRead(A0)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
pot6 = analogRead(A0)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
pot7 = analogRead(A0)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
pot8 = analogRead(A0)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
pot9 = analogRead(A1)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
pot10 = analogRead(A1)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
pot11 = analogRead(A1)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
pot12 = analogRead(A1)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
pot13 = analogRead(A1)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
pot14 = analogRead(A1)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
pot15 = analogRead(A1)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
pot16 = analogRead(A1)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
sw1 = analogRead(A2)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
sw2 = analogRead(A2)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
sw3 = analogRead(A2)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
sw4 = analogRead(A2)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
sw5 = analogRead(A2)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
sw6 = analogRead(A2)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
sw7 = analogRead(A2)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
sw8 = analogRead(A2)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
sw9 = analogRead(A3)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
sw10 = analogRead(A3)
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
sw11 = analogRead(A3)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
sw12 = analogRead(A3)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
sw13 = analogRead(A3)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
sw14 = analogRead(A3)
digitalWrite(pinS2, HIGH);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, HIGH);
sw15 = analogRead(A3)
}
void loop() {
// put your main code here, to run repeatedly:
}