the only thing that I see in your code is a double setCursor.
lcd.setCursor(9, 1);
lcd.setCursor(9, 1);
lcd.print(vin);
Serial.print(vin);
Serial.println(" volt");
As vin is a float you might add the decimals parameter: lcd.print(vin, 1); // default = 2
Furthermore I had an LCD that needed a delay() of a few millis to process the commands.
Can you tell what LCD you have - datasheet - ?
And a link to the LiquidCrystal_I2C library?
Does the library accepts floats?
Have you tried
lcd.setCursor(9, 1);
int whole = vin;
int decimal = (vin - whole)*10;
lcd.print( whole);
lcd.print( ".");
lcd.print( decimal );
Serial.print( vin);
Serial.println(" volt");