Bonjour,
je ne suis pas certain que se soit le bon emplacement pour ce poste mais étant donné que Excel est quelque part une "base de données", j'imagine que oui !
voici mon problème :
je dois lire dans une certaine colonne de mon fichier xls tous les record du début à la fin et supprimer les lignes qui ne répondent pas à certains critères.
pour parcourir le fichier aucun problème mais je n'arrive pas à supprimer ces lignes !
voici mon code :
pouvez-vous également me dire comment faire pour écraser un document existant sans avoir le message "le document machin existe déja voulez ....... ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 procedure TfrmMain.btnimportClick(Sender: TObject); var testcell : AnsiString; aValue, aRange, aSheetName : AnsiString; vCell, vSaveChanges, vWorksheet : variant; tmp:string; i:integer; begin //création d'une instance d'Excel vMSExcel := CreateOleObject('Excel.Application'); vMSExcel.Visible := false; //Ouverture du classeur vXLWorkbooks := vMSExcel.Workbooks; vXLWorkbook := vXLWorkbooks.Open(txtpath.Text); //Sauvegarde du classeur sous un autre nom tmp:=aFileName+'\'+formatdatetime('dd-mm-yyyy',now)+'.xls'; vSaveChanges := false; vXLWorkbook.SaveAs(tmp); vXLWorkbook.Close; //ouverture du classeur sauvegardé vMSExcel.Visible := false; vXLWorkbooks := vMSExcel.Workbooks; vXLWorkbook := vXLWorkbooks.Open(tmp); //Accès à la sheet 1 aSheetName := vXLWorkbook.WorkSheets[1].Name; vWorksheet := vXLWorkbook.WorkSheets[aSheetName]; aRange := 'E3'; //parcours du fichier et suppression des lignes non drp i:=2; while i>0 do begin vCell := vWorksheet.Range['E' + IntToStr(i)]; aValue := vCell.Value; if aValue='' then break; showmessage(aValue); if aValue <> '16020050' then begin //vWorksheet.Range[inttostr(i) + ':' + IntToStr(i)].Select; //vWorksheet.Cells.Item[i,i].EntireRow.Delete(xlUp); end; inc(i); end; //showmessage(inttostr(i)); //fermeture du classeur vSaveChanges:=true; vXLWorkbook.Close(vSaveChanges, tmp); //fermeture de Excel vMSExcel.Quit; vMSExcel := unassigned; end;
merci d'avance
Partager