Salut à tous, j'ai fais un petit algo qui doit parcourir toutes les feuilles d'un fichier excel afin de determiner quel est la dernière et de pouvoir travailler dessus.
Pour tester mon algo j'utilise un fichier excel comprenant 31 feuilles exactement. Mon algo devrait donc parcourir l'ensemble des feuilles excel afin d'ouvrir au final la 31ème feuille pour executer la suite de mon application.
J'ai procédé de la manière suivante :
1) Je vérifie que la feuille 1 ne soit pas vide
- Si elle est vide abandon du traitement
- sinon aller à 2)
2)Je vérifie si la feuille suivante est vide ou non
- Si elle est vide alors on garde la feuille précédente
- sinon on réexecute 2) tant que la feuille suivante soit vide
(Pour vérifier si une feuille est vide ou non on vérifie simplement que la case A1 ne soit pas vide.
Voici mon algo :
Voilà comme vous pouvez le constater j'ai placé des showMessage pour suivre l'évolution de mon code lors de l'exécution du prog, je parcours donc bien mes feuilles excel, cependant alors que l'algo devrait aller jusqu'à la feuille32 (31 + 1) et mémoriser donc la feuille 31 (32 - 1) puisque la feuille 32 n'existe pas, l'algo va jusqu'à la feuille 33 et plante ensuite.
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 j:=1; feuille:=false; XLWorksheet := XLWorkbook.WorkSheets[j]; titre:=XLWorksheet.range['A1']; if (titre<>'') then begin j:=j+1; showmessage(inttostr(j)); While (feuille=false) do begin showmessage(inttostr(j)); XLWorksheet := XLWorkbook.WorkSheets[j]; titre:=XLWorksheet.range['A1']; if (titre<>'') then begin showmessage('Ok'); j:=j+1; feuille:=false; end else begin ShowMessage('titre vide'); XLWorksheet := XLWorkbook.WorkSheets[j-1]; feuille:=true; end; end; end;
Quelqu'un verrait-il où je me suis planté ? (le ShowMessage "Titre vide" n'apparait jamais ce qui veut dire que je ne rentre as dans le else mais je ne comprends pas pkoi)
Partager