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

Deski Discussion :

Macro VBA pour convertir le rapport en CSV [VxiR2]


Sujet :

Deski

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 32
    Points
    32
    Par défaut Macro VBA pour convertir le rapport en CSV
    Bonjour,

    J'ai le client lourd Deski XiR2, je souhaite savoir comment créer une macro VBA pour automatiser l'enregistrement du rapport BO (avec un seul onglet) dans un fichier CSV ?

    Un Expert VBA est le bienvenu pour m'accompagner dans la création de cette macro

    Car en ce qui me concerne ... je suis nul en VBA

  2. #2
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    En fait, tout dépend de ce que tu as et de ce que tu veux obtenir...

    Que cherches-tu à exporter ?
    - Ton rapport ?
    - Les donnée de ton cube ?

    Comment veux-tu l'exporter ?
    - Garder la mise en forme ?
    - Conserver les éventuels filtres placés sur le rapport ?

    Quand veux-tu l'exporter ?
    - Au rafraichissement du rapport ?
    - A l'enregistrement du rapport ?
    - A la fermeture du rapport ?

    Ci-dessous le code à placer pour faire un simple export du rapport vers un fichier csv au moment de la sauvegarde du rapport. (chemin est l'emplacement, le nom et l'extension du fichier cible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Document_BeforeSave(Cancel As Boolean)
        Dim chemin
        chemin = "C:\toto.csv"
        ThisDocument.Reports(1).ExportAsText (chemin)
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 32
    Points
    32
    Par défaut
    Merci TomDuBouchon pour ta réponse rapide

    Citation Envoyé par TomDuBouchon Voir le message
    Que cherches-tu à exporter ?
    - Ton rapport ?
    - Les donnée de ton cube ?
    [/code]
    Je souhaite exporter les données de mon cube.
    De la même façon que l'option exporter du microcube mais avec des ";" et non des ","

    Citation Envoyé par TomDuBouchon Voir le message
    Comment veux-tu l'exporter ?
    - Garder la mise en forme ?
    - Conserver les éventuels filtres placés sur le rapport ?
    [/code]
    Dans un premier temps exporter les données brutes.
    On verra plus tard si j'ai besoin de la mise en forme et des filtres.

    Citation Envoyé par TomDuBouchon Voir le message
    Quand veux-tu l'exporter ?
    - Au rafraichissement du rapport ?
    - A l'enregistrement du rapport ?
    - A la fermeture du rapport ?
    [/code]
    J'aimerai que le rapport s'ouvre automatiquement (via un fichier .BAT - pour ça je dois avoir la solution)
    A l'ouverture le rapport rafraichit les données et les exporte dans le fichier CSV

    Citation Envoyé par TomDuBouchon Voir le message
    Ci-dessous le code à placer pour faire un simple export du rapport vers un fichier csv au moment de la sauvegarde du rapport. (chemin est l'emplacement, le nom et l'extension du fichier cible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Document_BeforeSave(Cancel As Boolean)
        Dim chemin
        chemin = "C:\toto.csv"
        ThisDocument.Reports(1).ExportAsText (chemin)
    End Sub
    J'ai fait un simple copier/coller du VBA dans le REP ; enregistré le tout ; ré ouvert le REP ; rafraichit les données ; enregistré le REP ... et la pas de toto.csv dans mon C:\
    Donc je te confirme, je suis vraiment nul avec le VBA

    As-tu besoin de plus d'info ?

  4. #4
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Je te laisse voir le problème du .bat

    Sinon, je te conseille pour le rafraichissement de cocher la case "rafraichir le document à l'ouverture" dans Outis > Options > Enregistrement

    Ensuite, pour le code, il faut se placer dans Project(tonfichier.rep) > BusinessObjects Objects > ThisDocument (tonfichier.rep)
    et ensuite, dans la fenêtre de code, placer ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Document_AfterRefresh()
        Dim chemin As String
        chemin = "C:\toto.csv"
        Call ThisDocument.DataProviders.Item(1).ConvertTo(boExpAsciiCSV, 1, chemin)
    End Sub
    Par contre, je n'ai pas trouvé de moyen pour spécifier le séparateur, qui sera par défaut ","

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 32
    Points
    32
    Par défaut
    EXCELLENT !!!

    Penses-tu pouvoir trouver mon problème de virgule ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 32
    Points
    32
    Par défaut
    Tout compte fait, je souhaite pouvoir récupérer la mise en forme dans mon CSV

    Dans mon REP j'ai une colonne avec ="AB" & <id>
    Dans mon CSV j'ai le numéro de l'id mais je perd le caractère "AB"

    Avez-vous une solution ?

  7. #7
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Dans ce cas là, le code est plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Document_AfterRefresh()
        Dim chemin As String
        chemin = "C:\toto.csv"
        ThisDocument.Reports(1).ExportAsExcel (chemin)
    End Sub

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 32
    Points
    32
    Par défaut
    SUPER

  9. #9
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut ???
    Veuillez m'excusez je suis débutant en VBA.
    J'ai testé ce code, mais avant tout j'ai une question, comment marche la méthode reports et surtout a quel type d'objet correspond ThisDocument.
    Personnelment j'ai un classeur xlBook auquel je veux qppliquer la méthode reports et cela ne semble pas marcher? pouvez vous m'éclairer sur la question?
    Merci

  10. #10
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    ThisDocument est un objet de type BusinessObjectsDocument. Et la méthode Reports permet de parcourir les différents "onglets" du fichier BO correspondant.

    Par contre, je ne connais pas les méthodes relatives à xlBook mais il doit sans doute y en avoir une qui produit le même résultat.

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

Discussions similaires

  1. Aide pour Creer Macro VBA pour CSV et google calendar
    Par mister_audioman dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/01/2012, 01h59
  2. [VBA] Macro pour convertir le rapport en CSV [XIR2]
    Par BipBipBO dans le forum SDK
    Réponses: 1
    Dernier message: 11/06/2010, 15h44
  3. Réponses: 4
    Dernier message: 19/03/2009, 09h57
  4. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09
  5. [VBA-E] Macro VBA pour personaliser mon .doc depuis mon .xls
    Par korntex5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2006, 16h01

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