DC motor with limits

I'm using this code to make a dc motor go to one side and when it gets to the limit go to the other side until it reaches the other side limit and wait till I press again the start bottom. The problem is that when I press the start bottom, the motor doesn't respond to the first limit, unless the start bottom is still press, the second limit (the else one) has no problem.
How can I make the program respect the first limit without the start bottom press?

int enA = 10;
int in1 = 9;
int in2 = 8;
int limite = 7;
int limiteRet = 6;
int start = 5;

void setup()
{
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(limite,INPUT);
  pinMode(limiteRet,INPUT);
  pinMode(start,INPUT);
}
void loop()
{
if (digitalRead(start) == HIGH){
  activado();
}
}

  void activado()
  {
  if(digitalRead(limite) == LOW){
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(enA, 250);
}
else{
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW); 
  delay(1000);
  while(digitalRead(limiteRet) == LOW){
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(enA, 250);
}
digitalWrite(in1, LOW);
  digitalWrite(in2, LOW); 
  delay(1000);
}
  }

How can I make the program respect the first limit without the start bottom press?

You can start by telling us how the limit switches are wired, and why you are not using INPUT_PULLUP as the mode.

You can follow that up by telling us which limit switch is causing you problems. Imagine that we can't see your setup, so you need to tell us using names from your program.

I do not understand why one direction uses a while loop to wait for the switch to become pressed but the other does not.