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 :

OLE Excel - Supprimer une ligne


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut OLE Excel - Supprimer une ligne
    Bonjour,
    j'ai un petit problème pour supprimer une ligne dans "excel".

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     vMSExcel := CreateOleObject   ('Excel.Application');
    ...
      aFileName       := ExtractFilePath(Application.ExeName)+'liste.xlsx';  // Path+'liste.xls' -> contient la base de donnée
      vXLWorkbooks := vMSExcel.Workbooks;
      vXLWorkbook  := vXLWorkbooks.Open(aFileName);
      aSheetName   := 'liste';                                                                 // Onglet 'liste' dans le classeur Excel
      vWorksheet    := vXLWorkbook.WorkSheets[aSheetName];
    -> vmsexcel.ActiveSheet.Rows.Delete; Marche .... supprime toutes les lignes .... Mon classeur est vide :-( bof bof comme solution.
    -> vmsexcel.ActiveSheet.Rows(1).Delete; ne marche pas .... me dit "Membre introuvable" même si je défini manuellement de nom de la feuille.
    Pour info : Windows 10 / Delphi XE / Excel 2016
    Si quelqu'un a une idée....
    Gatesbillou

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 044
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je suis loin d'être un spécialiste d'OLE et encore moins d'Excel aussi suis-je allé sur la FAQ https://delphi.developpez.com/faq/?p...r-des-cellules

    AMHA ce que j'en déduit : MaFeuille.Cells.Item[2,2].EntireRow.Delete(xlShiftDown); supprimera la ligne 1 mais je peux me tromper n'ayant pas Excel sur mon poste, intestable

    mais je pense aussi que Rows est un tableau peut-être que vmsexcel.ActiveSheet.Rows[1].Delete serait juste (et plus simple)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    D'abord merci pour ton aide,

    MaFeuille.Cells.Item[2,2].EntireRow.Delete(xlShiftDown); ne fonctionne pas il accepte msexcel.Activesheet.Cells.Item(2,2).EntireRow.Delete; mais toujours un "Membre introuvable".
    J'ai essayé vmsExcel.ActiveWorkBook.ActiveSheet.Rows(1).Delete; pareil (pourtant c'est détaillé).

    "Je pense aussi que Rows est un tableau peut-être que vmsexcel.ActiveSheet.Rows[1].Delete serait juste " -> Delphi XE n'accepte pas [1] ce doit être (1) , mais toujours un "membre introuvable"
    Je me demande si par hazard mon delphi ne serait pas "trop vieux" pour excel 2016 , c'est bête , mais j'en suis arrivé a cette idée car je ne comprend pas pourquoi ca ne marche pas alors que ca me semble bon.
    Gatesbillou

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    vWorksheet et ActiveSheet c'est certains que c'est le bon onglet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vWorksheet.Rows.Item(1).EntireRow.Delete
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 044
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    En tout cas j'ai eu la curiosité de regarder dans d'autres forums (simple google avec les mot clés Delphi+Excel+delete+row) et reste conforté sur les []
    maintenant, Excel2016, tableau xlsx cela fait peut-être une différence du coup j'ai pensé au composant CData Excel j'en avais fait quelques tests interessants mais en butant sur quelques trucs
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    vWorksheet et ActiveSheet c'est certains que c'est le bon onglet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vWorksheet.Rows.Item(1).EntireRow.Delete
    Il me semble que OUi puisque quand j'y accède par (truc:=vmsexcel.cells.item[i,3]; par exemple) je lit bien la bonne valeur. Mon fichier Excel n'a : que "1" fiche nommée 'liste' , "300" lignes et "16" colonnes.

    vWorksheet.Rows.Item(1).EntireRow.Delete retourne encore "membre introuvable" alors que je peux lire , écrire et tout effacer sans problème.
    Gatesbillou

  7. #7
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Bonsoir Pascal_

    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vMSExcel                 : variant;
      aFileName                : string;
      vXLWorkbook, vXLWorkbooks: variant;
      aSheetName               : AnsiString;
      vWorksheet               : variant;
      vCell                    : variant;
     
    begin
      vMSExcel := CreateOleObject('Excel.Application');
      vMSExcel.Visible := true;
     
      aFileName := 'D:\Privé\Classeur1.xlsx'; // Path+'liste.xls' -> contient la base de donnée
      vXLWorkbooks := vMSExcel.Workbooks;
      vXLWorkbook := vXLWorkbooks.Open(aFileName);
      aSheetName := 'liste'; // Onglet 'liste' dans le classeur Excel
      vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
     
      vCell := vWorksheet.Range['A1'];
      vCell.entireRow.Delete;
    end;
    Fonctionne chez moi...
    Cordialement
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ta solution , ca fonctionne très bien !

    Un grand merci a toi et aux autres participants d'avoir bien voulu m'accorder du temps , maintenant mon projet est presque terminé grâce a vous.

    Pour info : mon programme rempli des fiches ".PDF" avec des données Excel.
    Gatesbillou

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

Discussions similaires

  1. [VBA] Comment supprimer une ligne entiere dans excel
    Par babouoles dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/07/2017, 08h34
  2. [OLE] Pilotage OLE excel insérer une ligne
    Par Pascale38 dans le forum C++Builder
    Réponses: 1
    Dernier message: 20/12/2016, 14h11
  3. Probleme en VBA Excel : supprimer une ligne doublante
    Par yanly dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2007, 13h54
  4. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  5. [VBA Excel] Ajouter, supprimer une ligne ou collone range
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/11/2005, 15h53

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