Traffic light problem! - millis - no delays

Hello, I've been trying to create a simple traffic light with 2 sets of lights and a button that activates a emergency set that blinks yellow..

now the button works and triggers the yellow emergency lights but the normale states of

red - green
red- yellow
red- red
etc etc aren't working.. ( all the leds light up when button isn't pressed.)

Now I don't want to use delays because if someone presses the button while there a delay it'l have to be held until another state happens.

please help!

const int buttonPin = 12; //broche du bouton Poussoir
int buttonState = 0;      //variable pour l'etat du bouton
const int led_verte = 2;  //broche 2 du micro-contrôleur se nomme maintenant : led_verte
const int led_jaune = 3;  //broche 3 du micro-contrôleur se nomme maintenant : Led_jaune
const int led_rouge = 4;  //broche 4 du micro-contrôleur se nomme maintenant : Led_rouge
const int led_verte1 = 5; //broche 5 du micro-contrôleur se nomme maintenant : Led_verte1
const int led_jaune1 = 6; //broche 6 du micro-contrôleur se nomme maintenant : Led_jaune1
const int led_rouge1 = 7; //broche 7 du micro-contrôleur se nomme maintenant : Led_rouge1
unsigned long previousMillis=500;

void setup()
{
    // Configuration des broches de sortie et entrée
    pinMode(led_verte, OUTPUT); // ...
    pinMode(led_jaune, OUTPUT); //Led_jaune est une broche de sortie
    pinMode(led_rouge, OUTPUT); //Led_rouge est une broche de sortie
    pinMode(led_verte1, OUTPUT); // ...
    pinMode(led_jaune1, OUTPUT); //Led_jaune est une broche de sortie
    pinMode(led_rouge1, OUTPUT); //Led_rouge est une broche de sortie
    pinMode(buttonPin, INPUT);  //initialisation de la broche du bouton comme entree
    //buttonState = HIGH; //on initialise l'état du bouton comme "appuye
}

void Attente(long sec){
  buttonState = digitalRead(buttonPin);  
   unsigned long currentMillis = millis();
   if((currentMillis - previousMillis) >= sec && buttonState == LOW){
    ModeUrgence();
    previousMillis = currentMillis;
   }else if ((currentMillis - previousMillis) >= sec && buttonState == HIGH){
    previousMillis = currentMillis;
   }
}
 
void Etat1(){
  digitalWrite(led_rouge, LOW);   //allumer Led rouge
  digitalWrite(led_jaune, HIGH);  //simultannement et...
  digitalWrite(led_verte, HIGH);   //on éteint Led_verte
  digitalWrite(led_rouge1, HIGH);   //allumer Led rouge
  digitalWrite(led_jaune1, HIGH);  //simultannement et...
  digitalWrite(led_verte1, LOW);   //on éteint Led_verte
 
}
void Etat2(){
  digitalWrite(led_rouge, LOW);   //allumer Led rouge
  digitalWrite(led_jaune, HIGH);  //simultannement et...
  digitalWrite(led_verte, HIGH);   //on éteint Led_verte
  digitalWrite(led_rouge1, HIGH);   //allumer Led rouge
  digitalWrite(led_jaune1, LOW);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
  
}
void Etat3(){
   digitalWrite(led_rouge, LOW);   //allumer Led rouge
  digitalWrite(led_jaune, HIGH);  //simultannement et...
  digitalWrite(led_verte, HIGH);   //on éteint Led_verte
  digitalWrite(led_rouge1, LOW);   //allumer Led rouge
  digitalWrite(led_jaune1, HIGH);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
}
void Etat4(){
  digitalWrite(led_rouge, HIGH);
  digitalWrite(led_jaune, HIGH);
  digitalWrite(led_verte, LOW); 
  digitalWrite(led_rouge1, LOW);   //allumer Led rouge
  digitalWrite(led_jaune1, HIGH);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
  
}
void Etat5(){
    digitalWrite(led_rouge, HIGH);
  digitalWrite(led_jaune, LOW);
  digitalWrite(led_verte, HIGH); 
  digitalWrite(led_rouge1, LOW);   //allumer Led rouge
  digitalWrite(led_jaune1, HIGH);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
  
}
void Etat6(){
  digitalWrite(led_rouge, LOW);
  digitalWrite(led_jaune, HIGH);
  digitalWrite(led_verte, HIGH); 
  digitalWrite(led_rouge1, LOW);   //allumer Led rouge
  digitalWrite(led_jaune1, HIGH);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
  
}

void ModeUrgence(){
  //Eteindre les Feux
  digitalWrite(led_rouge, HIGH);
  digitalWrite(led_jaune, LOW);
  digitalWrite(led_verte, HIGH); 
  digitalWrite(led_rouge1, HIGH);   //allumer Led rouge
  digitalWrite(led_jaune1,LOW);  //simultannement et...
  digitalWrite(led_verte1, HIGH);   //on éteint Led_verte
  delay(500);
  digitalWrite(led_jaune, HIGH);
  digitalWrite(led_jaune1,HIGH);  //simultannement et...
  delay(500);
}
// on change simplement l’intérieur de la boucle pour atteindre notre objectif
void loop() //la fonction loop() exécute le code qui suit en le répétant en boucle
{
  while(digitalRead(buttonPin)==HIGH){
  Etat1(); 
  Attente(24000);
  Etat2(); 
  Attente(4000);
  Etat3(); 
  Attente(2000);
  Etat4(); 
  Attente(24000);
  Etat5(); 
  Attente(4000);
  Etat6(); 
  Attente(4000);
  }
  ModeUrgence();
  
   
}

You wrote

he normale states of

red - green
red- yellow
red- red
etc etc aren't working.. ( all the leds light up when button isn't pressed.)

Could you show a time diagram with each LED state during ModeUrgence?

(deleted)

i think you said the key word there… “state” what you want is a state machine…

here is a decent concise arduino focused tutorial I found on the subject:

so your states might be GREEN_ON,RED_ON,YELLOW_ON, TRANSITION_TO_RED, etc

also there is a pinned post on the first page of the Project Guidance(this) forum that covers this sort of thing(running many things at once)