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 :

Excel : insérer lignes avec OLE


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Par défaut Excel : insérer lignes avec OLE
    Bonjour à tous

    En me référant à ceci : https://lfe.developpez.com/PasExcel/

    Je n'arrive pas à savoir comment :
    - insérer des lignes dans une feuille
    - Sélectionner une plage dans une feuille
    - Coller cette sélection dans une autre feuille.

    Tout fonctionne chez moi à partir de cette FAQ (instancier Excel, ouvrir et fermer un classeur, lire une cellule, etc.) MAIS pas ce qui n'est pas décrit... Donc, ci-dessus.

    Est-ce impossible avec ce type de syntaxe et d'objets COM ?

    J'ai les TMS, mais je préfèrerais apprendre.
    Merci

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je n'utilise plus OLE depuis des années, nécessité d'avoir Excel installé sur le poste oblige.

    Citation Envoyé par bvsud Voir le message
    - insérer des lignes dans une feuille
    à ma souvenance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel.ActiveSheet.Rows[10].Insert;
    - Sélectionner une plage dans une feuille
    Là, depuis que j'utilise CData Excel je fait de simples requêtes.
    De plus il me semble que les nouvelles versions de Delphi propose une version "améliorée" CoExcelApplication.Create

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Range :  ExcelRange;
     
    ..
      Range := Sheet.Range['A1', 'B2'];
      Range.RowHeight := 10;
    .. 
    // mais aussi 
     Range := Sheet.Range['d3:e4'];
    - Coller cette sélection dans une autre feuille.
    certainement quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RangeSheet2.Value := RangeSheet2.Value;
    Je suis totalement rouillé sur ce genre de sujet

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Par défaut
    OK. Merci
    Je teste ça et donne le retour.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Par défaut
    Marche pas

    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
     
    Procedure Lire_Cellule_Bis;
    Var
      Excel : variant;
      Classeur : variant;
      TabSheet : AnsiString;
      vXLWorkbook : variant;
     
    begin
     
    // Instancier
      Excel := CreateOleObject('Excel.Application');
      Excel.Visible := False;
     
    // Ouvrir classeur
     
      Classeur := Excel.Workbooks;
      vXLWorkbook := vXLWorkbooks.Open(Nom_Cplt_Classeur_Patients);
     
     
    // Fermer Excel
      Excel.Quit;
      Excel := unassigned;
     
    end;
    Delphi XE7 : il n'y a pas un composant, pour manipuler Excel ? Le TMS qui fait ça exige un fichier de configuration, mais... lequel, sous quel format ? Les Jedi ? Bizarre qu'il n'y ait pas de composant "naturel" pour ça, sous Delphi... Ou alors, je ne le vois pas. Et je n'ai pas les CDATA.


    Il n'y a que deux techniques qui me manquent :
    1- sélectionner une plage
    2- insérer des lignes vers le bas.

    L'unité Excel2000 a l'ai de faire ça, mais... où est le tuto ?

  5. #5
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Citation Envoyé par bvsud Voir le message
    Marche pas
    C'est à dire, pourrais-tu être un peu plus précis ? On dirait un client qui appelle...




    Tiens, un exemple que je viens de rédiger qui te montre une façon d'insérer une ligne

    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
    procedure TForm1.MafonctionExcel;
    Var
      Classeur: Variant;
      TabSheet: AnsiString;
      vXLWorkbook, vXLWorkbooks: Variant;
      Sheet: Variant;
      vCell: Variant;
    begin
     
      FMyExcel := CreateOleObject('Excel.Application');
      FMyExcel.Visible := true;
     
      Classeur := FMyExcel.Workbooks;
     
      vXLWorkbooks := FMyExcel.Workbooks;
      vXLWorkbook := vXLWorkbooks.Add;
     
      Sheet := vXLWorkbook.ActiveSheet;
      vCell := Sheet.Range['A1'];
      vCell.Value := 'ligne 1';
     
      vCell := Sheet.Range['A2'];
      vCell.Value := 'ligne 2';
     
      // insérer la ligne
      vCell.EntireRow.Insert;
     
    end;

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Par défaut
    Pardon pour le ton qui a pu te froisser. Je ne voulais surtout pas... Je m'excuse.
    Je vais tester ton code et te donne le retour.

    C'est moi que l'on n'arrête pas d'appeler ce matin pour des prospections. Ca flingue les nerfs, ce machin !!! C'est même illégal !

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/12/2013, 18h28
  2. [XL-2010] Insérer ligne avec formule gardé
    Par nathalie69 dans le forum Excel
    Réponses: 4
    Dernier message: 17/12/2011, 14h14
  3. Ouvrir un fichier excel en ligne avec COM
    Par CyrilD dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2010, 10h17
  4. [Toutes versions] Insérer lignes avec cellules non vides
    Par esstin dans le forum Excel
    Réponses: 4
    Dernier message: 11/08/2010, 18h23
  5. [XL-2003] repérer cellule, insérer ligne avec total
    Par Neptune64 dans le forum Excel
    Réponses: 4
    Dernier message: 15/09/2009, 16h32

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