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

OpenOffice & LibreOffice Discussion :

macro pour créér un table de pilote (ou tableau croisé dynamique) avec fonction COUNT [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Futur Membre du Club
    Homme Profil pro
    controleur
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : controleur

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut macro pour créér un table de pilote (ou tableau croisé dynamique) avec fonction COUNT
    bonjour,
    voici mes données (une variable N° d'ordre)

    N° d'ordre
    1
    1
    2
    3
    1
    2

    je voudrais créer un tableau croisé dynamique par programmation me donnant le résultat suivant :

    N° d'ordre NB - N° d'ordre
    1 3
    2 2
    3 1

    en effet le n° d'ordre 1 apparait 3 fois le 2 2 fois et le 3 une fois.

    voici le bout de programme me permettant de créer mon tableau dynamique :en ligne je mets le n° d'ordre et comme données la fonction count appliqué au numéro d'ordre mais le résultat est qu'au lieu d'appliquer la fonction count il applique la fonction somme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       'variable en ligne  
       lesChamps.getByIndex(0).setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.ROW)
       'données
       lesChamps.getByIndex(0).setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
       lesChamps.getByIndex(0).setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.COUNT)
    et j'obtiens

    N° d'ordre Somme - N° d'ordre
    1 3
    2 4
    3 3
    Total Résultat 10

    question subsidiaire :

    si je veux à la fois la somme et le nombre je code ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       'variable en ligne  
       lesChamps.getByIndex(0).setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.ROW)
       'données
     
       lesChamps.getByIndex(0).setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
       lesChamps.getByIndex(0).setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.SUM)
     
       lesChamps.getByIndex(0).setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
       lesChamps.getByIndex(0).setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.COUNT)
    mais je n'ai que la somme (2 fois)

    N° d'ordre Données
    1 Somme - N° d'ordre 3
    Somme - N° d'ordre 3
    2 Somme - N° d'ordre 4
    Somme - N° d'ordre 4
    3 Somme - N° d'ordre 3
    Somme - N° d'ordre 3
    Total Somme - N° d'ordre 10
    Total Somme - N° d'ordre 10

    merci de m'aider.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    un truc du genre :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub TablePilote
       Dim document As Object, feuille As Object, zoneSource As Object, cellule As Object
       Dim tables As Object, descripteur As Object, lesChamps As Object
       Dim Champ1,Champ2,Champ3 As Object
     
       document = ThisComponent
       feuille = document.sheets(0)
       zoneSource = feuille.getCellRangeByName("A1:A15")
       tables = feuille.getDataPilotTables()
       descripteur = tables.createDataPilotDescriptor()
       descripteur.setSourceRange(zoneSource.RangeAddress)
       lesChamps = descripteur.getDataPilotFields()
       ' Page :
       ' unChamp = lesChamps.getByIndex(x)
       ' unChamp.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.PAGE)
       ' unChamp.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.NONE)
       ' Colonne : 
       'unChamp = lesChamps.getByIndex(x)
       'unChamp.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.COLUMN)
       'unChamp.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.NONE)
       ' Ligne :  N°Ordre
       Champ1 = lesChamps.getByIndex(0)
       Champ1.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.ROW)
       Champ1.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.NONE)
       ' Données : N° Ordre
       Champ2 = lesChamps.getByIndex(0)
       Champ2.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
       Champ2.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.SUM )
       Champ3 = lesChamps.getByIndex(0)
       Champ3.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
       Champ3.setPropertyValue("Function",  com.sun.star.sheet.GeneralFunction.COUNT)
       ' cellule où est mise la table 
       cellule = feuille.getCellRangeByName("C1")
       If tables.hasByName("pilote") then tables.removeByName("pilote")
       tables.insertNewByName("pilote", cellule.CellAddress, descripteur)
     
    End Sub
    devrait faire l'affaire.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Futur Membre du Club
    Homme Profil pro
    controleur
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : controleur

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    merci encore !

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

Discussions similaires

  1. Macro pour créer plusieurs tables access a partir d'un fichier Excel
    Par jonathan810 dans le forum Macros Access
    Réponses: 6
    Dernier message: 02/05/2013, 15h01
  2. [Macro] macro pour regrouper des tables
    Par melomanu dans le forum Macro
    Réponses: 5
    Dernier message: 16/10/2008, 17h05
  3. Macro pour ajouter un nouvel élément dans un tableau
    Par dudu134 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/02/2007, 16h31

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