Mes hommages Mesdames, mes respects Messieurs!
Dans mon appli:
- je connecte
- j'ouvre un classeur Excel (avec readonly à false)
- Je colle le contenu d'une variable enregistrement dans une plage de cellules (x colonnes et 1 ligne)
- Je sauvegarde le classeur
- Je ferme le classeur
- je déconnecte

J'ai un message d'erreur:
Le projet MonProjet à provoqué une classe d'Exception EOleException avec le message "Impossible d'accéder au document en lecture seule 'MonDoc.Xls'. Processus ...

Lorsque je relance l'appli, puisque je n'ai pas pu terminer correctement (la connexion à excel est toujours en cours et le classeur est ouvert mais invisible) j'ai un autre message d'erreur:
Le projet MonProjet à provoqué une classe d'Exception EOleException avec le message "Erreur Ole 800A03EC'. Processus ...

et d'autres fois:
Le projet MonProjet à provoqué une classe d'Exception EOleException avec le message "Erreur Ole 800AC472'. Processus ...

Maintenant voici mes questions:
1) Pour pouvoir créer un gestionnaire d'Exceptions convenable, quelqu'un pourrait-il me donner la commande de lecture du message d'erreur
Exception.Message ne semble pas fonctionner dans le cas des Exceptions Ole?

2) Y a t il un moyen (par itérations ou autre) d'affecter les champs d'un enregistrement à des cellules?

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
28
29
30
31
32
33
34
 
  Try
    ExcelApplication1.Connect;                        // Connection à Excel
          MonClasseur:=ExcelApplication1.Workbooks.Open(FBaseT, False, False, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
            EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
    ExcelApplication1.Visible[0]:=False;         // Excel est invisible
    MaFeuille:=MonClasseur.Worksheets[1] as _worksheet;
   ...
    MaFeuille.Range[Ann,Ann].Value := Af.Numr;  // A: N° d'affaire
    MaFeuille.Range[Bnn,Bnn].Value := Af.Libl;  // B: Libellé
    MaFeuille.Range[Cnn,Cnn].Value := Af.Adrs;  // C: Adresse
    MaFeuille.Range[Dnn,Dnn].Value := Af.Comm;  // D: Commune
    MaFeuille.Range[Enn,Enn].Value := Af.Inse;  // E: INSEE
    MaFeuille.Range[Fnn,Fnn].Value := Af.ChAf;  // F: Chargé d'affaires
    MaFeuille.Range[Gnn,Gnn].Value := Af.DMEO;  // G: Date de DMEO
    MaFeuille.Range[Hnn,Hnn].Value := Af.PMEO;  // H: Date de PMEO
   ...
    MonClasseur.SaveAs(FBaseT,
          EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
          xlNoChange,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
          Info.Panels[1].Text := 'L''affaire n°' + NumAff.Text +
           ' a été enregistrée dans le fichier ' + FBaseT +
           ' à la ligne: ' + IntToStr(NumLig);
  except
          on EOleException do begin
            Info.Panels[1].Text := EOleException.ClassName;
           { If Exception.message = 'Erreur OLE 800AC472' then begin
              MonClasseur.Close(Unassigned,Unassigned,Unassigned,1);
              ExcelApplication1.Disconnect;                 // Déconnexion d'Excel
              ExcelApplication1.Quit;                       // Fermeture d'Excel
            end;
            }
          end;
   end;
Merci