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

API, COM et SDKs Delphi Discussion :

[Excel & D7]Problème de suppression de lignes


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre éclairé Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Par défaut [Excel & D7]Problème de suppression de lignes
    Bonjour,

    Je souhaite a l'aide d'une interface Delphi formater un fichier excel en fonction de critères que l'on peut sélectionner dans l'interface.

    J'ai fait le code suivant pour supprimer les lignes ou la valeur n'est pas comprise entre des données voulues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If (OleApplication.Range[strLettre +  IntToStr(j)].Value < strMin) or (OleApplication.Range[strLettre +  IntToStr(j)].Value > strMax) Then
    Begin
        OleApplication.Range[IntToStr(j) + ':' + IntToStr(j)].Select;
        OleApplication.Cells.Item[j,j].EntireRow.Delete(xlShiftUp);
    End;
    Le problème c'est que ca plante a la 278ème lignes du fichier.

    D'ou peut venir mon erreur.

    A savoir que mon fichier Excel peut avoir plus de 10 000 lignes.

    Merci d'avance.

    Isa

  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 Re: [Excel & D7]Problème de suppression de lignes
    Salut,
    Citation Envoyé par Isa31
    Le problème c'est que ca plante a la 278ème lignes du fichier.
    D'ou peut venir mon erreur.
    Merci d'indiquer le message d'erreur rencontré ...

  3. #3
    Membre éclairé Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Par défaut
    Le message est le suivant :

    Le projet a provoqué une classe d'exception EOleException avec le message 'Erreur OLE 800A03EC'. Processus stoppé.

  4. #4
    Membre éclairé Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Par défaut
    J'ai trouvé la solution à mon problème mais je ne comprend pas pourquoi, enfin ou plutot quelle est la différence entre ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OleApplication.Selection.Delete(xlShiftUp);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OleApplication.Cells.Item[j,j].EntireRow.Delete(xlShiftUp);

  5. #5
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Salut,
    Encore des fichiers Excel avec 10000 lignes, d'autres 65536, j'ai du mal à comprendre, à mon avis, l'utilisateur de ces fichiers doit se prendre la tête pour utiliser ces fichiers...
    On a tendance à utiliser Excel pour gérer des données, mais souvent, c'est une Base de donnée qu'il faudrait faire, et on peut même faire des calculs avec une BD.
    Enfin ce n'est qu'un conseil...
    Pour tes 2 lignes de code, à tu regardé l'aide Excel ou VB ?
    @+
    Fabrice

  6. #6
    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
    Trouvé sur les newsgroups Borland
    >Does anyone know what OLE Error 800A03EC is

    It is the error that Excel reports nine times out of ten,
    whatever is wrong. Tell us the line of your code that
    causes the problem, and we can (probably!) fix it.

    Deborah Pate (Team JEDI)
    Dans ton cas il s'agit peut être d'un pb de type de donnée utilisée ?
    Doc Delphi
    ...
    La différence principale entre Variant et OleVariant est que Variant peut contenir des types de données que seule l'application en cours sait traiter. OleVariant contient uniquement des types de données compatibles avec OLE Automation, ce qui signifie que ces types de données peuvent être transférés entre programmes ou sur le réseau sans qu'il soit nécessaire de savoir si l'autre extrémité saura manipuler les données.

  7. #7
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    En créant des macros Excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // effacer des lignes entières
    Rows("6:10").Select
    Selection.Delete Shift:=xlUp
     
    // effacer une plage, décaler vers le haut
    Range("A10:F16").Select
    Selection.Delete Shift:=xlUp
    En général quand je pilote Excel avec delphi, suivant les cas, j'enregistre une macro sur las actions à faire, je récupère le code de la macro que je transpose sous Delphi. Résultats garantis à 100%.
    J'ai essayé et avec ces 2 syntaxes cela fonctionne, sans erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	XlsPage.Cells.Item[1, 10].EntireRow.Delete(xlShiftUp);
    	XlsPage.Range['A10', 'F16'].Delete(xlShiftUp);
    J'utilise un composant TExcelApplication, et déclare:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	XlsWk: 	_workbook;
    	XlsPage :_Worksheet;
    @+
    Fabrice

  8. #8
    Membre éclairé Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Par défaut
    Pour moi il n'y avait pas de différence entre toutes les lignes que je supprimais, je pensais plutot a un problème mémoire ou un truc du genre.

    Merci a vous tous.

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

Discussions similaires

  1. [OpenOffice][Tableur] Problèmes de suppression de lignes
    Par patrick97348 dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 14/12/2008, 20h01
  2. [Access 2003] Problème de suppression de ligne
    Par Amitom dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2007, 16h51
  3. [VBA-E] Problème de suppression de lignes
    Par coxi77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2006, 14h01
  4. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 08h14
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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