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

Composants VCL Delphi Discussion :

delphi7 - Application copier sélection


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut delphi7 - Application copier sélection
    Bonjour à tous,
    j'ai un TExcelApplication dans mon projet.
    j'ouvre un fichier et sélectionne manuellement une zone.
    je voudrais, en appuyant sur un bouton, copier cette zone dans le presse papier
    comme ca, en appuyant sur un autre bouton (ou en suivant), je collerai cette sélection dans une autre fichier.
    En gros, faire un "ctrl c" mais sans sendkeys

    merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    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 096
    Par défaut
    Quand tu dis "sélectionne manuellement une zone", tu le fais dans Excel ?
    A ce moment, le Focus est dans Excel pas dans ton application Delphi ! Est-ce correct ?
    Tu veux faire toi même la récupération des données par Range[] ou Cells[] ?
    Regarde l'objet TClipboard
    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

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    je sélectionne dans excel une plage de cellule
    je reviens dans mon appli
    et je ve faire copier.
    Mon probleme c'est de récupérer la plage de vellule précédemment sélectionnée dans excel.
    Un truc dans le genre ExcelApplication1.selection.copy;

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    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 096
    Par défaut
    Si je ne l'ai jamais tenté mais en théorie

    Dans Excel, tu fais un CTRL+C normal !
    Tu retournes dans ton programme Delphi, regarde la propriété Clipboard.HasFormat, tu auras probablement soit CF_TEXT soit CF_COMPONENT
    Avec Clipboard.AsText, tu devrais récupérer le texte de la selection, comme lors d'un copier vers Notepad avec TAB comme séparateur de colonne

    Sinon, effectivement, l'autre solution, tu sélectionnes dans Excel sans rien de plus, tu retournes dans ton application "ExcelApplication1.Selection" devrait contenir ce qu'il faut, comme tu utilises l'objet en Early Bidinds, tu ne devrais pas avoir du mal à trouver la bonne propriété, comme Cells[]

    un code genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      R: Range; // ou IRange
    ...
      Range := ExcelApplication1.Selection;
     
      for x := 1 to Range.Columns.Count do
      begin
        for y := 1 to Range.Rows.Count do
        begin
          ... := Range.Cells[x, y];
    J'avais cela mais avec TMS FlexCell, dans mon cas, c'était des zones nommées que je remplissais !


    EDIT, lol, 16h38 - 16h39, on se suit, tu es donc passé en LateBinding, normalement cela reste la même chose !

    Tu es sur que Copy fait ce que tu cherches, il me semblait que cela servait à copier une Range en cours dans une autre Cellule, mais à l'intérieur du fichier Excel pas pour en extraire les valeurs !

    EDIT 2 : le sujet importer des données excel dans une application delphi devrait te plaire aussi !
    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é
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    Le copy tel que je l'ai mis ne copie que ce qui est sélectionné (ce que je veux).
    UsedRange sélectionne toutes les cellules utilisées.

    TExcelApplication ne marche pas pareil, comme sur ton lien, je fais un CreateOleObject, c'est plus simple ensuite

    en tout cas, merci de ton aide

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    J'ai trouvé !
    Au lieu d'utiliser un objet TExcelApplication, j'utilise un

    OleApplication2 := CreateOleObject('Excel.Application');
    Puis
    OleApplication2.selection.copy;

    maintenant, il faut juste que je refasse tout en fonction de ca

    merci

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

Discussions similaires

  1. [Delphi7] Multi-sélection dans une TStringGrid
    Par dino_xrc dans le forum Delphi
    Réponses: 1
    Dernier message: 30/08/2006, 10h42
  2. Sélection avec la souris hors d'une application
    Par carlg dans le forum API, COM et SDKs
    Réponses: 17
    Dernier message: 08/03/2006, 10h02
  3. [StringGrid] Comment copier la sélection ?
    Par lol_adele dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/09/2005, 10h28
  4. Réponses: 3
    Dernier message: 20/01/2005, 19h19
  5. Copier la sélection
    Par hunter dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/11/2004, 16h12

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