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 :

Changer de feuille dans un classeur Excel


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 39
    Points : 29
    Points
    29
    Par défaut Changer de feuille dans un classeur Excel
    Bonjour,

    j'ai un problème pour sélectionner la première feuille dans un classeur Excel ouvert et piloter depuis delphi en OLE.

    J'ai essayer plusieurs code trouver ici et là dans le forum et la FAQ mais au mieux j'ai un erreur du type "membre introuvable" avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exl.ActiveSheet:=Exl.WorkBooks.Item(1);
    En fait il faudrait aussi que je sache comment sauter d'une feuille à l'autre.

    Merci d'avance à tous.

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 017
    Points
    7 017
    Par défaut
    C'est pas quelque chose, comme :
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xl.Sheets[‘Feuil3’].Select
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Merci avec ce code j'arrive à bouger de page en page mais le problème c'est que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exl.Sheets[cpt].Select;
    ne détermine pas forcement la première feuille Excel du classeur et ce quelque soit le nombre "cpt". Avec "cpt=1" sur un fichier Excel A, le programme me crée une nouvelle feuille dans le classeur et dans un fichier B, le programme se place correctement sur la première feuille du classeur.

    Moi je souhaite pouvoir atteindre toujours la première page du classeur.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    avec les composants je procéde ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         // Connect to the First worksheet
            ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[nbSheet] as _WorkSheet);
            ExcelWorksheet1.Activate;
            ReadCurrentWorkSheet(nbSheet);
    Avec un variant regarde du coté de la méthode Activate.
    Extrait de la doc XL :
    Activate, méthode

    Active un objet comme indiqué dans le tableau suivant.

    Objet Description
    Worksheet Active la feuille (revient à cliquer sur l'onglet de la feuille).
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exl.Sheets[cpt].Activate;
    (Je n'ai pas testé)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Avec la méthode "activate", ca marche pareil que la méthode "select", le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exl.Sheets[cpt].Activate;
    marche correctement, mais je ne suis pas sûre du résultat et c'est ça qui me dérange.

    Ce que je ne comprends pas c'est que dans mon fichier Excel A, il me crée une nouvelle feuille avec "cpt=1" ; pour aller à la première feuille il faut "cpt=2", alors que dans le fichier B le programme me renvoi la première feuille pour "cpt=1" et une erreur du type "membre introuvable" pour "cpt=2".

    Fichier A : 3 feuilles dans un même classeur Excel nommées réspectivement "Feuil1", "Feuil2", "Feuil3".

    Fichier B : 1 feuille dans un classeur Excel nommée "Test".

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    C'est toi qui crée le fichier et les feuilles ?
    Le nombre renvoyé par Worksheets.count est-il correct ??

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Non, le fichier Excel est déjà créé.

    La méthode "WorkSheets.Count" renvoi le nombre 4 dans le fichier A (3 feuilles) et renvoi 1 pour le fichier B (1 feuille).

    Je trouve ça bizarre, le problème vient peut-être de ce fichier Excel.

    Je vais essayer de naviguer de page en page en repérant la page contenant les données à traiter, comme ça je tomberai à coup sur sur la page voulu.

    Je vous remercie tous beaucoup pour les informations que vous m'avez donné ; est-ce quelqu'un sait ou je pourrais trouver les méthodes pour piloter MSOFFICE depuis DELPHI 4 PRO.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde dans la FAQ, avec cette version tu dois créer des fichiers de librairie si je me souviens bien.

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

Discussions similaires

  1. liaisons des feuilles dans un classeur excel
    Par ritonetmumu dans le forum Excel
    Réponses: 4
    Dernier message: 07/12/2007, 19h03
  2. Réponses: 4
    Dernier message: 20/04/2007, 09h13
  3. inserer des nouvelles feuilles dans un classeur excel
    Par chamus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2006, 16h22
  4. [VBA-E]Existence d'une feuille dans un classeur EXCEL
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2006, 15h58
  5. VB6 : création de feuilles dans un classeur Excel
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2005, 16h37

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