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.
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 :
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).1
4
8
3
67
3
2
43
34
76
J'ai écris un petit programme de test pour comprendre.
Les variables utilisées en vrac sont :
Il y a bien le "ComObj" dans le Uses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 vMSExcel : variant; vXLWorkbooks, vXLWorkbook : variant; vWorksheet : variant; aSheetName : AnsiString; aFileName : AnsiString;
L'ouverture de Excel, le chargement de la feuille Excel et le choix de l'onglet se passe comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 try vMSExcel := GetActiveOleObject('Excel.Application'); except vMSExcel := CreateOleObject('Excel.Application'); end; vMSExcel.Visible := true;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...![]()
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'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 place des apostrophes, pas d'erreur de compilation, mais une erreur d’exécution :
Vous avez une idée, je galère depuis hier...
Je suis sous Delphi 2009.
Merci à l'avance pour votre aide.
Stef
Partager