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

Bases de données Delphi Discussion :

Supprimer lignes Excel


Sujet :

Bases de données Delphi

  1. #1
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut Supprimer lignes Excel
    Bonjour,

    je ne suis pas certain que se soit le bon emplacement pour ce poste mais étant donné que Excel est quelque part une "base de données", j'imagine que oui !

    voici mon problème :

    je dois lire dans une certaine colonne de mon fichier xls tous les record du début à la fin et supprimer les lignes qui ne répondent pas à certains critères.

    pour parcourir le fichier aucun problème mais je n'arrive pas à supprimer ces lignes !

    voici mon 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
    procedure TfrmMain.btnimportClick(Sender: TObject);
    var
    testcell : AnsiString;
    aValue, aRange, aSheetName : AnsiString;
    vCell, vSaveChanges, vWorksheet : variant;
    tmp:string;
    i:integer;
    begin
      //création d'une instance d'Excel
      vMSExcel := CreateOleObject('Excel.Application');
      vMSExcel.Visible := false;
     
      //Ouverture du classeur
      vXLWorkbooks := vMSExcel.Workbooks;
      vXLWorkbook := vXLWorkbooks.Open(txtpath.Text);
     
      //Sauvegarde du classeur sous un autre nom
      tmp:=aFileName+'\'+formatdatetime('dd-mm-yyyy',now)+'.xls';
      vSaveChanges := false;
      vXLWorkbook.SaveAs(tmp);
      vXLWorkbook.Close;
     
      //ouverture du classeur sauvegardé
      vMSExcel.Visible := false;
      vXLWorkbooks := vMSExcel.Workbooks;
      vXLWorkbook := vXLWorkbooks.Open(tmp);
     
      //Accès à la sheet 1
      aSheetName := vXLWorkbook.WorkSheets[1].Name;
      vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
      aRange := 'E3';
     
      //parcours du fichier et suppression des lignes non drp
      i:=2;
      while i>0 do
      begin
        vCell := vWorksheet.Range['E' + IntToStr(i)];
        aValue := vCell.Value;
        if aValue='' then break;
        showmessage(aValue);
        if aValue <> '16020050' then
        begin
          //vWorksheet.Range[inttostr(i) + ':' + IntToStr(i)].Select;
          //vWorksheet.Cells.Item[i,i].EntireRow.Delete(xlUp);
        end;
        inc(i);
      end;
      //showmessage(inttostr(i));
      //fermeture du classeur
      vSaveChanges:=true;
      vXLWorkbook.Close(vSaveChanges, tmp);
     
      //fermeture de Excel
      vMSExcel.Quit;
      vMSExcel := unassigned;
    end;
    pouvez-vous également me dire comment faire pour écraser un document existant sans avoir le message "le document machin existe déja voulez ....... ?

    merci d'avance
    [Il était une fois Delphi ....]


  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Sans garantie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets('Feuil1').Range[Rows(Line1), Rows(line2)].Delete

  3. #3
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets('Feuil1').Range[Rows(Line1), Rows(line2)].Delete
    Merci pour ta réponse mais malheureusement ça ne fonctionne pas.
    Aucun message d'erreur, mais aucune réaction non plus !

    En revanche, j'ai trouvé comment faire disparaitre les messages d'avertissements. Je n'ai pas tout perdu !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     vMSExcel.DisplayAlerts:=false; //Pour ne pas avoir de message d'alerte
    [Il était une fois Delphi ....]


  4. #4
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    ca y est, j'ai trouvé ! pff c'est vraiment ridicule !

    ce n'était qu'un problème d'incrémentation de ma varible compteur.
    Effectivement à chaque fois que je supprimais un ligne je ne devais pas incrémenter mon i.

    voici ma boucle au cas ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while i>0 do
      begin
        vCell := vWorksheet.Range['E' + IntToStr(i)];
        aValue := vCell.Value;
        if aValue='' then break;
        if aValue <> '16020050' then
        begin
          vWorksheet.Range[inttostr(i) + ':' + IntToStr(i)].Select;
          vWorksheet.Range[inttostr(i) + ':' + IntToStr(i)].Delete;
          i:=i;
        end else inc(i);
      end;
    @+
    [Il était une fois Delphi ....]


  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Et avec mon instruction, cela fonctionne ?

  6. #6
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    non, mais merci quand même !
    [Il était une fois Delphi ....]


  7. #7
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    j'essaie en rentrant mais je crois que cette ligne n'est pas utile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vWorksheet.Range[inttostr(i) + ':' + IntToStr(i)].Select;
    [Il était une fois Delphi ....]


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

Discussions similaires

  1. Supprimer des lignes Excel depuis Access
    Par mat75019 dans le forum Access
    Réponses: 18
    Dernier message: 10/07/2021, 07h23
  2. Supprimer ligne excel selon multiples conditions
    Par fdavid67 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/06/2013, 16h56
  3. Supprimer une ligne excel apres un test IF
    Par yoyo3d dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/09/2006, 16h55
  4. VBA supprimer plusieur ligne excel
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/06/2006, 20h56
  5. [VBA] supprimer une ligne excel
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2006, 14h11

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