Tout d'abord merci pour ce forum qui m'a déjà beaucoup aidé.

J'ai un problème que je n'arrive désespérément pas à résoudre, je m'explique.
Mon programme lit des fichiers CSV (que je choisi via une combobox) et affiche son contenu dans une listview créée auparavant.
J'ai aussi un bouton qui permet d'enregistrer la listview dans un fichier.
Ce que je n'arrive pas à faire, c'est éditer cette listview.
J'ai trouvé de des fonctions telles que "_GUIListViewEx_SetEditStatus" et des programmes qui fonctionnent avec mais impossible de l'intégrer à ce programme.
J'ai réussi à faire qu'un item soit cliquable mais lorsque je modifie un item via cette fonction le programme plante.
Je pense que le problème vient du fait que ma listview est définie dans une fonction et non en "dur" dans la GUI principale.
Si quelqu'un a une idée je suis preneur (que ce soit via la fonction citée ci-dessus ou par un substitue)

Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <ColorConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <string.au3>
#include <GuiListView.au3>
#include <Excel.au3>
#include <FontConstants.au3>
#include <GuiListBox.au3>
#include <GUIListViewEx.au3>
$gui_principale = GUICreate("liste Pokemon",@DesktopWidth,@DesktopHeight-65)
GUISwitch($gui_principale)
GUISetState()
;titre
$titre = GUICtrlCreateLabel("Liste Pokémon", (@DesktopWidth/2)-100,40,250,50)
GUICtrlSetFont(-1, 25, $FW_NORMAL, $GUI_FONTUNDER,"")
;images
;$imagepath=@DesktopDir&"\Pokemon\image\feunard.jpg"
;$t=GUICtrlCreatePic($imagepath, 40, 80,270,390)
;$imagepath=@DesktopDir&"\Pokemon\image\raichu.jpg"
;$t=GUICtrlCreatePic($imagepath, 40, 550,270,390)
;combo
$combo = GUICtrlCreateList("sdb",@DesktopWidth-285,200,200,230,$LBS_NOTIFY)
GUICtrlSetFont(-1, 18, $FW_NORMAL, "","")
GUICtrlSetData(-1,"jungle")
GUICtrlSetData(-1,"fossile")
GUICtrlSetData(-1,"rocket")
GUICtrlSetData(-1,"neo_genesis")
GUICtrlSetData(-1,"neo_discovery")
GUICtrlSetData(-1,"neo_revelation")
GUICtrlSetData(-1,"neo_destiny")
;liste view
$tableau = GUICtrlCreateListView("Numéro carte | Nom carte | ed1 | ed2",350, 100,1205,910,-1, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_GRIDLINES))
GUICtrlSetFont(-1, 15, $FW_NORMAL, "","")
_GUICtrlListView_SetColumn($tableau,0,"Numéro carte",400,2)
_GUICtrlListView_SetColumn($tableau,1,"Nom Carte",400,2)
_GUICtrlListView_SetColumn($tableau,2,"Ed1",200,2)
_GUICtrlListView_SetColumn($tableau,3,"Ed2",200,2)
;Bouton quitter
$bt_quitter = GUICtrlCreateButton("Quitter", @DesktopWidth-285,800,200,75)
GUICtrlSetTip(-1, "quitter")
GUICtrlSetFont(-1, 20, $FW_NORMAL, "","")
;Bouton Save
$bt_save = GUICtrlCreateButton("Sauvegarder", @DesktopWidth-285,650,200,75)
GUICtrlSetTip(-1, "Sauvegarder")
GUICtrlSetFont(-1, 20, $FW_NORMAL, "","")
$sDelimiter = ';'
While 1
$choix = GUIGetMsg()
Select
Case $choix = $Gui_event_close
ExitLoop
Case $choix = $combo
f_lirefichier($combo)
Case $choix = $bt_save
_GUICtrlListView_SaveTxt($tableau, $combo, $sDelimiter)
Case $choix = $bt_quitter
Exit
EndSelect
WEnd
Func f_lirefichier($serie)
;RAZ Listview et lecture du fichier choisi
_GUICtrlListView_DeleteAllItems($tableau)
$file=GUICtrlRead($serie)
$filepath=@ScriptDir&"\liste_csv\"&$file&".csv"
$read = FileRead($filepath)
$line = StringSplit($read, @CR)
Local $debut = StringMid($file, 1, 3)
IF $debut = "neo" Then
;gestion de la taille des colonnes ed
_GUICtrlListView_SetColumn($tableau,2,"Ed",200,2)
_GUICtrlListView_SetColumn($tableau,3,"Ed2",0,2)
GUICtrlCreateListViewItem(" | | |", $tableau)
;Insertion des lignes si la série est une néo
For $i = 2 To $line[0]-1
$ligne = FileReadLine($filepath, $i)
$info = StringSplit($ligne, ";")
$num=$info[1]
$nom=$info[2]
$ed=$info[3]
GUICtrlCreateListViewItem($num & "|" & $nom & "|" & $ed, $tableau)
Next
Else
;gestion de la taille des colonnes ed
_GUICtrlListView_SetColumn($tableau,2,"Ed1",200,2)
_GUICtrlListView_SetColumn($tableau,3,"Ed2",200,2)
GUICtrlCreateListViewItem(" | | |", $tableau)
;Insertion des lignes si la série est une normale
For $i = 2 To $line[0]-1
$ligne = FileReadLine($filepath, $i)
$info = StringSplit($ligne, ";")
$num=$info[1]
$nom=$info[2]
$ed=$info[3]
$ed2=$info[3]
GUICtrlCreateListViewItem($num & "|" & $nom & "|" & $ed & "|" & $ed2, $tableau)
Next
EndIf
EndFunc
;fonction save
Func _GUICtrlListView_SaveTxt($hListView, $combo, $sDelimiter = '|')
$file_to_text=GUICtrlRead($combo)
$sFilePath_to_text=@ScriptDir&"\listetest_csv\"&$file_to_text&".csv"
If $sDelimiter = Default Then
$sDelimiter = '|'
EndIf
Local Const $iColumnCount = _GUICtrlListView_GetColumnCount($hListView) - 1
Local Const $iItemCount = _GUICtrlListView_GetItemCount($hListView) - 1
Local $sReturn = ''
For $i = 0 To $iItemCount
For $j = 0 To $iColumnCount
$sReturn &= _GUICtrlListView_GetItemText($hListView, $i, $j)
If $j < $iColumnCount Then
$sReturn &= $sDelimiter
EndIf
Next
$sReturn &= @CRLF
Next
Local $hFileOpen = FileOpen($sFilePath_to_text, $FO_OVERWRITE)
If $hFileOpen = -1 Then
Return SetError(1, 0, False)
EndIf
FileWrite($hFileOpen, $sReturn)
FileClose($hFileOpen)
MsgBox(0,"","Fichier bien sauvegardé")
Return True
EndFunc ;==>_GUICtrlListView_SaveTxt