Excel : utilisation de la fonction tri
Bonjour,
Dans un nouveau projet je dois ajouté des données à la suite dans un fichier Excel. Grâce à la FAQ et à Google, j'ouvre Excel, place les données dans les bonne colonne/ligne sans soucis. :D
Mais voilà, une nouvelle demande des utilisateurs. Un bloc de donnée devrait être trier... heureusement pour l'instant sur un seul critère... mais qui sait si ils ne vont pas cherchés a me compliquer la vie !
Les données dans mon fichier excel ressemble à ca :
Citation:
1
4
8
3
67
3
2
43
34
76
Et le tout est dans la colonne B et débute à la ligne 5 (il y a des infos au dessus a ne pas toucher).
J'ai écris un petit programme de test pour comprendre.
Les variables utilisées en vrac sont :
Code:
1 2 3 4 5
| vMSExcel : variant;
vXLWorkbooks, vXLWorkbook : variant;
vWorksheet : variant;
aSheetName : AnsiString;
aFileName : AnsiString; |
Il y a bien le "ComObj" dans le Uses.
L'ouverture de Excel, le chargement de la feuille Excel et le choix de l'onglet se passe comme ça:
Code:
1 2 3 4 5 6
| try
vMSExcel := GetActiveOleObject('Excel.Application');
except
vMSExcel := CreateOleObject('Excel.Application');
end;
vMSExcel.Visible := true; |
Code:
1 2 3 4 5 6 7 8 9
| // Ouvre le fichier Excel
aFileName := ExtractFilePath(Application.ExeName)+'sort.xls';
memo1.Lines.Add(aFileName);
vXLWorkbooks := vMSExcel.Workbooks;
vXLWorkbook := vXLWorkbooks.Open(aFileName);
aSheetName := 'Feuil1';
vWorksheet := vXLWorkbook.WorkSheets[aSheetName]; |
C'est à partir de là que ça coince... :( :oops:
Code:
1 2 3
| procedure TForm1.Sort_XLSClick(Sender: TObject);
begin vWorksheet.Range['B5','B15'].sort(vWorksheet.Range['B5','B5'],'xlAscending',EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,'xlGuess', 1, False, 'xlTopToBottom', EmptyParam);
end; |
Si je ne met pas entre apostrophe les paramètres: "xlAscending, xlGuess, xlTopToBottom", j'ai un message d'erreur à la compilation : [DCC Erreur] Unit1.pas(53): E2003 Identificateur non déclaré : 'xlAscending' :(
Si je place des apostrophes, pas d'erreur de compilation, mais une erreur d’exécution :
http://img217.imageshack.us/img217/2475/errorvcb.jpg
Vous avez une idée, je galère depuis hier...
Je suis sous Delphi 2009.
Merci à l'avance pour votre aide.
Stef