j'aurai besoin dans un script, de chercher si un document word contient une chaine de caractère, afin de le remplacer ensuite si c'est le cas.
Les serveurs d'ou seront lancé les scripts ne possédent pas tous word.
Je me suis dit que j'allais changer l'extension du document word en .txt afin de chercher ma chaine de caractère qui apparait bien si j'ouvre le fichier txt obtenu avec le bloc note.
Le soucis, est que mon script qui recherche le mot, ne marche que si j'ouvre et sauvegarde au moins une fois le document txt.
Dans le code, on peut voir que la variable "$line_number" reste à la valeur 1 tant que je n'ai pas ouvert/sauvegardé le document (elle pas à ce moment là à 74)
Est ce que quelqu'un sait pourquoi ?
Ou un moyen de contournement ?
j'ai joins le fichier en fin de post
merci
Code : Tout sélectionner
#include <FileConstants.au3>
#Include <File.au3>
$Convention = "C:\test\Lettre type.txt"
$soutput2 = "F" & " " & "U" & " " & "S" & " " & "I" & " " & "O" & " " & "N" & " " & "G"
$exist = FileExists($Convention)
If $exist = 0 Then
MsgBox(16,"Erreur","Le fichier Lettre type.txt est introuvable à cet emplacement: " & $convention)
Exit
EndIf
If $exist = 1 Then
$line_number = _FileCountLines($Convention)
MsgBox(16,"test",$line_number)
$line_tested = 0
$trouver = 0
$Rep = ""
While 1
$line_tested = $line_tested +1
$line_to_test = FileReadLine($Convention,$line_tested)
FileWrite(@TempDir&"\temp_search",$line_to_test)
$il_y_est=_ReplaceStringInFile(@TempDir&"\temp_search",$soutput2,"")
If $il_y_est = 1 Then
$Rep = $Rep&@CRLF&FileReadLine($Convention,$line_tested)
$trouver = 1
EndIf
FileDelete(@TempDir&"\temp_search")
If $line_tested = $line_number Then
ExitLoop
EndIf
WEnd
If $trouver = 0 Then
MsgBox(16,"copie","non trouvé copie de ....")
Else
MsgBox(16,"copie","mot trouvé je copie ...")
EndIf
endIf