j’aimerai une clarification sur la fonction StringInStr. Vu la doc, en cas au la chaîne n'est pas trouvé, on doit avoir un résultat à 0.
Valeur de retour
Succès: Retourne la position de la sous-chaîne.
Échec: Retourne 0 si la sous-chaîne n'est pas trouvée.
@error: 1 = Paramètres 'start' ou 'occurrence' invalide.
Du coup dans mon bout de code, je comprends pas pourquoi la valeur de $string est toujours égale à 0.
Au cas où la chaîne n’est pas trouvé je souhaite sortir du programme, pas seulement de la boucle.
On peut sûrement faire plus simple, je suis ouvert à toutes suggestions

local $file = @ScriptDir&"\ConsultaSaldos.txt"
local $recup = @ScriptDir&"\super.txt"
local $mot = "china"
local $i=1
While 1
$line = FileReadLine($file,$i)
If @error = -1 Then ExitLoop
$string = StringInStr($line, $mot)
If StringInStr($line, $mot) Then FileWriteLine($recup, $line)
If $string = 0 Then Exit
$i=$i+1
Wend
local $recup = @ScriptDir&"\super.txt"
local $mot = "china"
local $i=1
While 1
$line = FileReadLine($file,$i)
If @error = -1 Then ExitLoop
$string = StringInStr($line, $mot)
If StringInStr($line, $mot) Then FileWriteLine($recup, $line)
If $string = 0 Then Exit
$i=$i+1
Wend