IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[Delphi 5]+[Excel] EOleException


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut [Delphi 5]+[Excel] EOleException
    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

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MelkInarian
    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?
    Tu peux peut être t'inspirer de ceci http://delphi.developpez.com/faq/?pa...s#esterreurwmi

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Par défaut
    Voit le code du traitement de l'exception, je pense que tu oublies la déclaration de la variable "E :".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      try
      .
      .
      .
      except
        on E : EOleException do //il faut que tu affectes une variable à ton exception
        begin
          //ton traitement de l'exception
        end;
      end;

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Salut

    Je vois que tu sauves ton documents avec

    Attention,

    Si tu ouvres ton classeur avec un nom, il faut faire un Save pour le sauver sous le meme nom, ou un SaveAs pour le sauver sous un autre nom.
    Si tu ouvres ton classeur sans nom, le SaveAs ne pose pas de problème.

    Là, visiblement, tu ouvres avec un certain nom, et tu fais un SaveAs avec le même nom -> l'erreur que tu as est normale.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Effectivement je tente de sauver avec SaveAs, mais c'est un essai. En effet, avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur.Save(0);      // Enregistre le fichier Base
    J'avais aussi un problème (qui ne s'est pas résolu d'ailleurs) de sauvegarde qui ne s'effectuait tout simplement pas.
    J'ai donc tenté plusieurs solutions voir ci dessous, mais aucune ne fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MonClasseur.SaveAs(FBaseT,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,xlNoChange,EmptyParam,EmptyParam,EmptyParam, EmptyParam,0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur.Close(False,FBaseT,Unassigned,0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur.SaveCopyAs(FBaseT,0);
    Si j'essaie de sauvegarder ce classeur, rien à faire par contre si je copie les données dans un autre classeur, il se sauvegarde bien avec SaveAs.
    Et comme sous Excel on peut bien "enregistrer sous" en gardant le même nom de classeur il suffit de valider dans la boite de dialogue qui s'ouvre.
    Dans le cas de mon appli, j'ai pris le soins de rajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ExcelApplication1.DisplayAlerts[0] := False;  // pas de message d'alerte
    ... //mon code
    ExcelApplication1.DisplayAlerts[0] := True;   // messages d'alerte rétablis
    Je vais maintenant tester avec les infos données par Laurent Dardenne pour mon Gestionnaire d'Exceptions, cela me permettra peut-être de comprendre où j'ai fais la boulette.

  6. #6
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Citation Envoyé par pinson
    Voit le code du traitement de l'exception, je pense que tu oublies la déclaration de la variable "E :".
    Bien sûr, tu as raison Pinson, j'ai oublié le E:
    Merci
    Je n'ai plus quà continuer pour trouver LA BOULETTE qui m'empêche de sauvegarder!
    à+
    J'ai beau me creuser les méninges, je ne trouve pas ce qui empêche l'écriture sur disque du fichier modifié.
    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
     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.Save(0);                        // Enregistre le fichier Base
        Sleep(3000);                                // attend 3000 ms pour laisser du temps à Excel (au cas où...
         IF not MonClasseur.Saved[0] then
                MonClasseur.Save(0);           // Enregistre le fichier Base ( encore au cas où... mais en débug cette instruction n'est jamais exécutée
     
        ExcelApplication1.Disconnect;                 // Déconnexion d'Excel
        ExcelApplication1.DisplayAlerts[0] := True;   // messages d'alerte rétablis
        ExcelApplication1.Quit;                       // Fermeture d'Excel
     
      except
       on E : EOleException do // exception
          begin
             ...
          end;
       end;
    Quelqu'un voit-il ce qui cloche?

    Merci

  7. #7
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    J'ai beau me creuser les méninges, je ne trouve pas ce qui empêche l'écriture sur disque du fichier modifié.

    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
     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.Save(0);                        // Enregistre le fichier Base
        Sleep(3000);                                // attend 3000 ms pour laisser du temps à Excel (au cas où...
         IF not MonClasseur.Saved[0] then
                MonClasseur.Save(0);           // Enregistre le fichier Base ( encore au cas où... mais en débug cette instruction n'est jamais exécutée
     
        ExcelApplication1.Disconnect;                 // Déconnexion d'Excel
        ExcelApplication1.DisplayAlerts[0] := True;   // messages d'alerte rétablis
        ExcelApplication1.Quit;                       // Fermeture d'Excel
     
      except
       on E : EOleException do // exception
          begin
             ...
          end;
       end;
    Quelqu'un voit-il ce qui cloche?

    Merci

  8. #8
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExcelApplication.Disconnect
    est à effectuer complétement à la fin non ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #9
    Membre éprouvé
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Par défaut
    N'appelle pas le Diconnect, le Quit le fait bien.

    Un seul conseil, met cela dans un try finally, sinon, tu vas avoir pas mal de processus fantome d'excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ExcelApplication1 := CreateOleObject('Excel'); //c'est un truc comme ça...
    try
     
    finally
      ExcelApplication1.Quit;
    end;
    Ceci ouvre puis ferme proprement Excel.

  10. #10
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    @Pinson
    j'aurais plutot dit l'inverse

    Le disconnect fait éventuellement un Quit
    Mais le Quit ne fait pas un Disconnect.

    Enfin, je me trompe peut-être ^^, à vérifier.

    Pour mon utilisation dans l'ordre, je fais:
    - close de mes feuilles
    - disconnect mes feuilles
    - disconnect mes workbook
    - disconnect mon applicationexcel

    Sans le Quit.
    Cela fonctionne bien depuis un certains temps
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #11
    Membre éprouvé
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Par défaut
    Je fais un save ou saveas et ensuite un Quit, et cela aussi fonctionne bien.

  12. #12
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Citation Envoyé par TicTacToe
    @Pinson
    j'aurais plutot dit l'inverse

    Le disconnect fait éventuellement un Quit
    Mais le Quit ne fait pas un Disconnect.

    Enfin, je me trompe peut-être ^^, à vérifier.

    Pour mon utilisation dans l'ordre, je fais:
    - close de mes feuilles
    - disconnect mes feuilles
    - disconnect mes workbook
    - disconnect mon applicationexcel

    Sans le Quit.
    Cela fonctionne bien depuis un certains temps
    Je viens d'essayer à la manière de pinson, l'environnement de l'appli fonctionne correctement sauf pour l'enregistrement de mon fichier qui ne s'enregistre pas.
    J'ai même essayé de:
    - l'enregistrer sous un autre nom,
    - quitter Excel,
    - Reconnecter,
    - rouvrir ce fichier temporaire pour l'enregistrer sous le nom d'origine.
    Mais j'ai une erreur "Impossible d'accéder au fichier xxxxx.Xls".

  13. #13
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Je viens de me rendre compte que la sauvegarde avec:
    s'exécute, mais dans le répertoire père de celui dans lequel il devrait se sauvegarder.
    J'ai recherché le chemin contenu dans la propriété: FullName (ou Path, c'est le même)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChemExl :=  UpperCase(MonClasseur.FullName[0]);
    C'est bien le bon chemin (celui que je souhaite).
    La tentative d'écrasement avec CopyFile s'est soldée par un échec.
    J'ai l'impression que malgrè la commande:
    Il reste quelque chose en mémoire connecté à mon fichier excel qui ne doit donc pas se fermer
    Je ne comprend pas pourquoi cela se passe ainsi!!!

  14. #14
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Une tentative en biaisant :
    - Sauvegarde temporaire puis suppression du fichier original avec erase:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            AssignFile(f, FBaseT);
            Try
              Erase(F);
            except
              On E: EInOutError do begin
                ShowMessage(E.Message + ' : ' + IntToStr(E.ErrorCode));
              end;
            end;
    Provoque une erreur EInOutError N°32
    (non documentée dans l'aide de Delphi 5)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            AssignFile(f, ChTmpR + 'PROVIS.XLS');
            Try
                Rename(f, pchar(FBaseT));                       // Rename(var F; Newname:PChar);
            except
              On E: EInOutError do begin
                ShowMessage(E.Message + ' : ' + IntToStr(E.ErrorCode));
              end;
            end;
    le rename provoque une erreur EInOutError N°183
    (non documentée non plus dans l'aide de Delphi 5)
    Quelqu'un a t il l'explication de ces 2 E.ErrorCode (les E.Message étant 'Erreur E/S' ce qui ne m'avance pas) et surtout le moyen de les contrer!

  15. #15
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut Delphi 5 et Excel XP Problème pour enregistrer
    Bonjour!
    J'ai modifié mon appli.
    J'ai supprimé le composant: TExcelApplication
    J'ai utilisé la manière donnée sur ce site à l'@
    http://lfe.developpez.com/PasExcel/
    Par LFE.
    Au moment de sauvegarder la feuille j'ai le même problème.
    Si j'utilise:
    Le classeur va se sauvegarder ailleurs (Mes Documents) alors que le chemin contenu dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xls_Path2.Caption :=  vMSExcel.ActiveWorkbook.Path;
    est correct.
    et si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vXLClasseur.SaveAs(FBaseT);
    j'ai:
    Le projet MonProjet à provoqué une classe d'Exception EOleException avec le message "Impossible d'accéder au document en lecture seule 'MonDoc.Xls'. Processus ...
    J'utilise Delphi 5 et Excel XP. voici mon nouveau code.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
      Try
        // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
        // ouverture de fichier EXCEL
        // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
        vMSExcel := CreateOleObject('Excel.Application');
        vMSExcel.Visible := true;
        try
          vXLClasseurs := vMSExcel.Workbooks;
          vXLClasseur  := vXLClasseurs.Open(FBaseT,unassigned,False);
          Xls_Path1.Caption :=  vXLClasseur.Path;
          vFeuille     := vXLClasseur.WorkSheets[1];
          vFeuille.Activate;                                    // Feuille 1 active
          // chercher la présence de l'enregistrement dans le fichier Bdd (Affaires en cours et traitées).
          Ann := 'A' + IntToStr(NumLig);                        // Plage Colonne "A" ligne "NumLig"
          Bnn := 'B' + IntToStr(NumLig);                        // Plage Colonne "B" ligne "NumLig"
          Cnn := 'C' + IntToStr(NumLig);                        // Plage Colonne "C" ligne "NumLig"
          Dnn := 'D' + IntToStr(NumLig);                        // Plage Colonne "D" ligne "NumLig"
          Enn := 'E' + IntToStr(NumLig);                        // Plage Colonne "E" ligne "NumLig"
          Fnn := 'F' + IntToStr(NumLig);                        // Plage Colonne "F" ligne "NumLig"
          Gnn := 'G' + IntToStr(NumLig);                        // Plage Colonne "G" ligne "NumLig"
          Hnn := 'H' + IntToStr(NumLig);                        // Plage Colonne "H" ligne "NumLig"
          Inn := 'I' + IntToStr(NumLig);                        // Plage Colonne "I" ligne "NumLig"
          vFeuille.Range[Ann,Ann].Value := Af.Numr;             // A: N° d'affaire
          vFeuille.Range[Bnn,Bnn].Value := Af.Libl;             // B: Libellé
          vFeuille.Range[Cnn,Cnn].Value := Af.Adrs;             // C: Adresse
          vFeuille.Range[Dnn,Dnn].Value := Af.Comm;             // D: Commune
          vFeuille.Range[Enn,Enn].Value := Af.Inse;             // E: INSEE
          vFeuille.Range[Fnn,Fnn].Value := Af.ChAf;             // F: Chargé d'affaires
          vFeuille.Range[Gnn,Gnn].Value := Af.DMEO;             // G: Date de DMEO
          vFeuille.Range[Hnn,Hnn].Value := Af.PMEO;             // H: Date de PMEO
          if Af.ARO_ <> 0 then
          vFeuille.Range[Inn,Inn].Value := Af.ARO_              // I: Date d'ARO
          else  vFeuille.Range[Inn,Inn].Value := '';
     
          //vMSExcel.DisplayAlerts := False;                      // pas de message d'alerte 
          //vXLClasseur.Save;
          Xls_Path2.Caption :=  vMSExcel.ActiveWorkbook.Path;
          vXLClasseur.SaveAs(FBaseT);
          Info.Panels[1].Text := 'Affaire n°' + NumAffGDT.Text +
                    ' enregistrée dans ' + vXLClasseur.Path +
                    '[' + vXLClasseur.Name + '] ligne: ' + IntToStr(NumLig);
        finally
          vXLClasseur.Close;                                    //   vXLWorkbook.Close(vSaveChanges, aFileName);
          vMSExcel.Quit;                                        // Ferme Excel
          //vMSExcel.DisplayAlerts := True;                       // messages d'alerte rétablis
          Info.Panels[0].Text := IntToStr(NumLig);
          Info.Panels[2].Text := '';
          Info.Panels[3].Text := IntToStr(NumLig);
        end;
      except
          on E: EAccessViolation do begin
                showmessage(E.Message + ' : ' + IntToStr(E.HelpContext));
          end;
       on E : EOleException do                                  // exception
        begin
           Info.Panels[1].Text := EOleException.ClassName + ' - ' + E.Message ;
           showmessage(E.Message + ' : ' + IntToStr(E.HelpContext));
        end;
      end;
    Merci à ceux qui voudront bien se pencher sur mon problème!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. delphi 3 - excel
    Par wilfried_42 dans le forum Delphi
    Réponses: 5
    Dernier message: 19/11/2006, 04h15
  2. Delphi et Excel
    Par defluc dans le forum Delphi
    Réponses: 1
    Dernier message: 04/09/2006, 18h19
  3. Réponses: 6
    Dernier message: 28/07/2006, 11h07
  4. Delphi et Excel : Lenteur sur un Insert
    Par defluc dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 08h49
  5. [win32] delphi importation excel
    Par pier dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/09/2005, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo