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 :

Manipuler un classeur Excel


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut Manipuler un classeur Excel
    Bonjour !

    J'ai lu dans la FAQ que pour pouvoir manipuler un fichier Excel, il faut d'abord ajouter les composants:
    TExcelApplication, TExcelWorkbook, et TExcelSheet que je ne trouve pas dans ma liste des composants;
    Sachant que j'utilise Delphi 10.4.

    J'aimerai savoir comment les ajouter

    Merci !

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Bonjour

    Si tu veux passer par les composants Office, il faut effectivement activer le paquet que tu veux prendre (XP ou2000).

    Ca devrait se trouver dans la liste des paquets sur l’option «* Composants / installer les paquets*» de l’IDE.

    Par contre ils ne manipulent pas les fichiers : ils passent par Office pour le faire, donc Office doit être installé sur le poste de travail.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut
    Merci pour votre réponse rapide et utile

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 084
    Par défaut
    Ces composants sont la version Early Binding des interfaces OLE d'Excel
    Via des OLEVariant, il est possible d'utiliser Excel en Late Binding, comme le ferait un VBS, cela fonctionne très bien mais demande une bonne lecture de la documentation MSDN

    Voici une utilisation basique du OLE d'Excel Late Binding: TSLTExcelDataSetExporter
    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
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut
    Merci pour votre réponse @ShailLeTroll,

    En fait, c'est la 1ére fois que j'essaie de faire des modifications sur un classeur Excel via Delphi,
    après quelque recherches sur internet, j'arrive à ouvrir un classeur,
    se positionner sur une feuille puis écrire dans une cellule.

    Mais mon objectif c'est de parcourir un classeur contenant plusieurs feuilles, chaque feuille contient un tableau,
    (dont la structure est la même pour toutes les feuilles, mais le nombre de lignes est variable)
    pour pouvoir créer un nouveau tableau rempli automatiquement à partir du premier,
    et situé juste après.

    Pour ce qui est Boucles, je m'en occuperai plus tard,
    Tout d'abord, j'essaie de repérer la fin du 1er tableau:
    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
    var
    L : integer;
    begin
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[1] := true;
    Opendlg.Execute();
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open
    (Opendlg.FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[3] as _WorkSheet);
    L := 11; // Début du tableau
    while ExcelWorksheet1.Cells.Item[L,1].value.asstring <> ''
    do L := L+1; // Trouver la fin du tableau
    showmessage(inttostr(L));
    Mais j'obtiens le message d'erreur: "Opération de variant incorrecte"

    Des idées ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 60
    Par défaut
    salut
    essais ça chez moi ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    L := 11; // Début du tableau
    while OleApplication1.Range['A'+IntToStr(L)].value <> '' //changer la lettre suivant la col
    do L := L+1; // Trouver la fin du tableau
    if L = 11 then
        ShowMessage('Tableau vide')
      else
        ShowMessage(IntToStr(L - 1));

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

Discussions similaires

  1. [XL-2010] Manipuler Classeur Excel pendant l'execution d'une macro VBA
    Par Landroval dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2018, 10h29
  2. Manipuler un classeur excel déja ouvert
    Par Aethia dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/09/2010, 14h54
  3. [Toutes versions] manipulation avec d'autres classeur excel
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/08/2009, 10h54
  4. Réponses: 2
    Dernier message: 08/04/2008, 14h55
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

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