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 :

Pilotage OLE Excel


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    857
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 857
    Points : 266
    Points
    266
    Par défaut Pilotage OLE Excel
    bonsoir,

    je travaille sur un fichier Excel en pilotage OLE depuis D2007

    une fois les données rentrées sur la feuille1 je dois dupliquer cette feuille

    Quel methodes ou fonction il faut utiliser pour dupliquer la feulle courante ?

    merci

  2. #2
    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,
    Citation Envoyé par looping
    Quel methodes
    rechercher Copy dans l'aide en ligne de VBA Excel
    Méthode Copy telle qu'elle s'applique aux objets Chart, Charts, Sheets, Worksheet et Worksheets.
    Cet exemple montre comment copier Sheet1 et placer la copie après Sheet3.
    Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    857
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 857
    Points : 266
    Points
    266
    Par défaut je n'y arrive pas
    bonjour,

    je n'arrive pas à adapter votre ligne de code sur mon project ?

    j'ouvre l'instance Excel "vMSExcel"
    ensuite le classeur "vXLWorkbooks" qui s'apelle "of.xls"
    puis le feuille "vWorksheet"qui s'appelle "trame"

    maintenant j'aimerais dupliquer cette feuille 'trame' et qu'elle se renomme automatiquement: trame(x)/trame(x+1)/trame(x+..)/trame(x+n).

    x,n:variable integer
    x variable d'itération initialisée à 1 au départ
    n étant le nombre de duplication que je souhaite

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     vMSExcel := CreateOleObject('Excel.Application');
        vMSExcel.Visible := true;
        vLink := unassigned;
     
        aFileName :=ExtractFilePath(Application.ExeName) + 'of.xls';
        vXLWorkbooks := vMSExcel.Workbooks;
     
        vXLWorkbook := vXLWorkbooks.Open(aFileName, vLink, false);
     
        aSheetName := 'trame';
        vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
    merci

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    Moi quand j'arrive pas à le faire par le code, je vais dans Excel, je crée une nouvelle macro et je fais à la main la manip que j'ai envie d'automatiser.

    Excel me crée automatiquement du code, j'ai plus qu'à regarder comment il fait...

    Dans le cas présent, le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Sheets("Feuil1").Copy Before:=Sheets(2)
    En Delphi ça pourrait donner quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        aSheetName := 'trame';
        vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
        vWorksheet.copy(After:=vWorksheet)
    à vérifier...

  5. #5
    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,
    Citation Envoyé par looping
    je n'arrive pas à adapter votre ligne de code sur mon project ?
    C'est compréhensiblen, c'est du VBA. C'était juste une piste de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      _Worksheet = interface(IDispatch)
    ...
        procedure Copy(Before: OleVariant; After: OleVariant; lcid: Integer); safecall;
    ...
    L'approche de EMC51 me semble approprié. Quant à la manipulation du nom de la feuille XL voir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        property Name: WideString read Get_Name write Set_Name;

Discussions similaires

  1. Pilotage OLE Excel et VBE
    Par Sunchaser dans le forum C++Builder
    Réponses: 34
    Dernier message: 25/02/2007, 20h49
  2. Réponses: 12
    Dernier message: 09/01/2007, 14h28
  3. Message d'attente pendant pilotage Ole Excel
    Par yottatiger dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/09/2005, 09h14
  4. Pilotage ole d'excel sous bcb6 -> AutoFilter
    Par GameOver dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/04/2005, 11h56
  5. Pb avec le pilotage OLE d'Excel
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/01/2005, 17h19

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