Excel et cellule de type LiCi au lieu de Ai

furax13 Messages postés 90 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 24 avril 2008 - 23 oct. 2007 à 13:57
cs_pers Messages postés 38 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 9 décembre 2009 - 23 oct. 2007 à 15:24
bonjour,
je désire piloter Excel depuis une application Delphi.

j'ai fait une partie du code qui ouvre un fichier excel, récupère dans le fichier excel le nombre de valeurs par données et le nombre de données à récupérer.

Ensuite, je désire lire en une seule fois la plage de valeurs comprise entre 2 cellules.
Cela marche parfaitement avec la notation suivante :
cellDebut := 'D12';
cellFin := 'CT545';

mais j'aimerais le faire fonctionner avec la notation L12C4 eà L545C98
Comment faire ?

Ci-joint le code :
ExcelApplication1.Connect;
ExcelApplication1.ReferenceStyle[xlR1C1];
MonClasseur := ExcelApplication1.Workbooks.Open('l:\bremen_trial3_5-6_5coils_normalized_EMO.xls', False, False,
  EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
  EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0);



ExcelApplication1.Visible[0] := true;
MaFeuille := MonClasseur.Worksheets[1] AS _worksheet;



cellDebut := 'L'+ IntToStr(PremiereLigne) + 'C' + IntToStr(ColonneTemps);
colFin := nbDataReal +ColonneTemps;
ligneFin := PremiereLigne +nbColonnesTotal;
cellFin := 'L'+ IntToStr(ligneFin-1) + 'C' + IntToStr(colFin);



//cellDebut := 'D12';
//cellFin := 'CT545';



Resultat := MaFeuille.Range[cellDebut, cellFin].Value;
FOR comptLig := 1 TO VarArrayHighBound(Resultat, 1) DO
  FOR comptCol := 1 TO VarArrayHighBound(Resultat, 2) DO
  begin
    mesValeurs[comptlig,comptcol] := Resultat[comptlig, comptcol];
    Resultat[comptlig, comptcol] := Resultat[comptlig, comptcol] * 3 + 2;
    StatusBar1.SimpleText := IntToStr(Resultat[comptlig, comptcol]) + ' valeurs pour ' + IntToStr(comptLig) + ' ligne' + IntToStr(comptCol) + ' colonnes';
  end;
MaFeuille.Range[cellDebut, cellFin].Value := Resultat;
 ExcelApplication1.disConnect;


merci pour votre aide

4 réponses

cs_pers Messages postés 38 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 9 décembre 2009
23 oct. 2007 à 15:20
Salut

Au lieu de "Range" il me semble plus simple
d'utiliser  "Cells(column,row)" dans  les boucles 'For'

@+
0
furax13 Messages postés 90 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 24 avril 2008
23 oct. 2007 à 15:22
En utilisant Cells, le problème est celui des performances.
0
cs_pers Messages postés 38 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 9 décembre 2009
23 oct. 2007 à 15:22
pardon "Cells[column,row]" 
0
cs_pers Messages postés 38 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 9 décembre 2009
23 oct. 2007 à 15:24
Ah ... à ce point là ??
0
Rejoignez-nous