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 :

Sous totaux dans excel 2007


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut Sous totaux dans excel 2007
    Bonjour,
    je voudrais appliquer des sous-totaux sur une feuille de calcul.
    J'utilise DELPHI 7 Personnel et EXCEL2007.
    La formule SUBTOTAL contient normalement les parametres suivant:
    1 la colonne sur laquelle on detecte les changements de valeurs
    2 la fonction a réaliser
    3 Les colonnes sur lesquelles on fait des totaux

    les parametres 4, 5 et 6 sont respectivement a TRUE, FALSE et TRUE pour mon cas.
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Excel := GetActiveOleObject('Excel.Application');
     
      Excel.columns.subtotal(3,1,6,TRUE,FALSE,TRUE);
    Pour ce cas précis, la fonction marche bien (detection sur la colonne 3 avec la fonction SOMME et SOUS-TOTAUX dans la colonne 6)
    Le probleme est que je voudrais faire des sous-totaux dans plusieurs colonnes en même temps ex: colonne 6 et 7 mais je ne sais pas écrire à la place du 6 quelquechose designant deux colonnes.

    Dans excel, on peut indiquer plusieurs colonnes en même temps !
    Merci d'avance pour les réponses.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 083
    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 083
    Par défaut
    subtotal
    accepte un "An array of 1-based field offsets, indicating the fields to which the subtotals are added"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel.columns.subtotal(3,1,VarArrayOf([6, 7]),TRUE,FALSE,TRUE);
    VarArrayOf renvoie un variant, si il faut un OleVariant cela peut être plus complexe avec VarArrayCreate

    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
     
    var
      V: OleVariant;
    ...
     
    V := VarArrayCreate([0, 1], varInteger);
     try
     
        V[0] := 6;
        V[1] := 7;
     
        Excel.columns.subtotal(3,1,V,TRUE,FALSE,TRUE); 
     
    finally
      VarClear(V);
    end;
    Après il y a aussi SafeArrayCreate

    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
     
    var
      V: OleVariant;
      ArrayBounds : TVarArrayBoundArray;
      K: Integer;
    ...
      SetLength(ArrayBounds, 1);
       ArrayBounds[0].LowBound:=  0;
       ArrayBounds[0].ElementCount:= 2;
     
      V := SafeArrayCreate( varInteger, 1, ArrayBounds);
     
      K := 6;   
      SafeArrayPutElement(V, 0, @K);
      K := 7;   
      SafeArrayPutElement(V, 1, @K);  
     
        Excel.columns.subtotal(3,1,V,TRUE,FALSE,TRUE);
    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é
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Bonjour Mr ShaiLeTroll,
    c'est clair, précis et répond à ma question !

    Merci et Bravo !.

    J'avais bien essayé avec v:array[0..1] of integer ou variant mais cela ne marchait pas !

    Maintenant, je sais transmettre des tableaux en OLE

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/01/2023, 12h12
  2. Désactiver "enregistrer sous.." dans Excel 2007
    Par elparagouayo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/10/2009, 14h54
  3. Réponses: 1
    Dernier message: 11/07/2007, 16h58
  4. Création de barres d'outils dans excel 2007
    Par vbanath dans le forum Excel
    Réponses: 1
    Dernier message: 03/05/2007, 22h01
  5. PB envoi sous-formulaire dans excel
    Par STANDBOY dans le forum Access
    Réponses: 7
    Dernier message: 13/03/2006, 09h21

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