I think I understand. First, the CSV you posted is NOT in CSV format. When I took your file and attempted import, this is what I got:
host : NZDL302011883,"True","23/07/2018 08:53:23",G44,1,A330 SYS.,Bureau derriere monte-charges / Face A330 TC5
Online :
TimeStamp :
Building :
Floor :
Gate :
Localisation :
host : NZDL302013110,"True","23/07/2018 08:53:23",G44,1,A380 SYS.,Sur pied / Control room A330 face alveole 6
Online :
TimeStamp :
Building :
Floor :
Gate :
Localisation
I removed all of the " and it imported properly, so it should look like this:
host : NZDL302011883
Online : True
TimeStamp : 23/07/2018 08:53:23
Building : G44
Floor : 1
Gate : A330 SYS.
Localisation : Bureau derriere monte-charges / Face A330 TC5
host : NZDL302013110
Online : True
TimeStamp : 23/07/2018 08:53:23
Building : G44
Floor : 1
Gate : A380 SYS.
Localisation : Sur pied / Control room A330 face alveole 6
Once you have a good CSV source, then it sound like you want to use the first 13 rows as your source and you want to re-test the online status and update the date\time and append new 13 rows to existing file.
$csvPath = 'C:\Scripts\test.csv'
$csv = Import-Csv -Path $csvPath
#Take the first 13 rows and update Online and TimeStamp
$newContent = $csv |
Select -First 13 -Property Host,
@{Name='Online';Expression={Test-Connection -ComputerName $_.host -Quiet -Count 1}},
@{Name='TimeStamp';Expression={Get-Date}},
Building,
Floor,
Gate,
Localisation
$newCSV = @() #Create new array
$newCSV += $csv #Append previous csv
$newCSV += $newContent #Append new rows
#Overwrite the existing CSV with the new CSV
$newCSV |
Export-CSV -Path $csvPath -NoTypeInformation
This code would take the original file, basically copy the first 13 rows and append it to bottom of the file, so you would have 26, then 39 and so on when the script is run.