Ajouter un 2ième excel sheet dans le stringgrid

Tuatarax Messages postés 3 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 8 avril 2009 - 1 avril 2009 à 13:20
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 8 avril 2009 à 22:15
Bonjour,

Mon problème est celui ci...

J'ai un stringgrid...
Dans le Stringgrid1 j'ai ajouter un fichier xls(excel), maintenant je veut dans le stringgrid1 après le premier fichier xls ajouter un 2ième fichier...?!

Ici mon code jusqu'a maintenant....

begin
 Result := False;
  XLApp  := CreateOleObject('Excel.Application');

  try
    XLApp.Visible := False;

    XLApp.Workbooks.Open(AXLSFile);

    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

    x :=   AGrid.RowCount + XLApp.ActiveCell.Row;
    y := XLApp.ActiveCell.Column;

    AGrid.RowCount := x;
    AGrid.ColCount := y;

    RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
    Rangee:= AGrid.RowCount-2;
    repeat
      for r := 1 to y do
        AGrid.Cells[r,Rangee]:= RangeMatrix[Rangee, R];
        Inc(Rangee, 1);
        Rangee := Rangee + 1;
    until Rangee > x;

RangeMatrix := Unassigned;

Merci d'avance pour des réponse

6 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 avril 2009 à 12:10
Bonjour,


essaie ce code..


XLApp.Sheets.Add(EmptyParam, EmptyParam, 1, xlWBATWorksheet, 0);

cantador
0
Tuatarax Messages postés 3 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 8 avril 2009
3 avril 2009 à 13:26
hmm ca ne marche pas, je l'avais remplacer avec

XLApp.Workbooks.Open(AXLSFile);

Ou est-ce que je dois le placer?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 avril 2009 à 18:22
C'est une vraie question !
je n'ai pas ton code complet mais j'ai écrit vite faite celui-ci que tu pourras adapater à ton étude :

unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;
  XLApp,MonClasseur : variant;


implementation


{$R *.dfm}


// Recup les noms des feuilles existantes
procedure LoadSheetName(var ObjetOLEExcel: Variant; var ListSheet: TstringList);
var
  i: integer;
begin
  ListSheet.Clear;
  for i := 1 to ObjetOLEExcel.WorkSheets.Count do
  begin
    ListSheet.add(ObjetOLEExcel.Worksheets.item[i].Name);
  end;
end;


// nouvelle feuille
procedure NewSheet(var ObjetOLEExcel, Classeur: Variant; SheetName: string);
var
  NumFeuil: integer;
  NomFeuil: string;
  OldList,NewList: TstringList;
begin
  if SheetName <> '' then
  begin
    OldList := TStringList.Create;
    OldList.Sorted := true;
    NewList := TstringList.Create;
    LoadSheetName(ObjetOLEExcel, OldList);
  end;
  Classeur.Worksheets.Add;
  if SheetName <> '' then
  begin
    LoadSheetName(ObjetOLEExcel, NewList);
    for NumFeuil := 1 to Classeur.Worksheets.Count do
    begin
      if OldList.IndexOf(Classeur.Worksheets.item[NumFeuil].Name) < 0 then
      begin
        NomFeuil := Classeur.Worksheets.item[NumFeuil].Name;
        Break;
      end;
    end;
    Classeur.Worksheets.item[NomFeuil].Name := SheetName;
    OldList.Free;
    NewList.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  NewSheet(XLApp, MonClasseur , 'test');
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  XLApp := CreateOleObject('Excel.Application');
  MonClasseur := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
end;


end.

à toi de tester avec ton AXLSFile

à mon avis, il faudrait aussi faire la même chose avec les classeurs, mais regarde si tu peux t'en sortir comme ça.

cantador 
0
Tuatarax Messages postés 3 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 8 avril 2009
8 avril 2009 à 08:26
Ca marche encore pas mais merci

je vais encore tester

tuatarax
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 avril 2009 à 17:25
messages d'erreurs ?

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 avril 2009 à 22:15
procedure TForm1.FormCreate(Sender: TObject);
begin
  XLApp := CreateOleObject('Excel.Application');
  XLApp.Workbooks.Open(AXLSFile);
  MonClasseur := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
end;

cantador
0
Rejoignez-nous