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

SDK Discussion :

[5.1.8] Créer une requête BO (via Macro depuis Excel)


Sujet :

SDK

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [5.1.8] Créer une requête BO (via Macro depuis Excel)
    Bonjour,

    Je possède BO V.5.1.8 . Je ne peux pas utiliser VBA avec le BO que je possède. J'utilise donc VBA depuis Excel. Mes connaissances en BO sont bonnes et je débute en VBA.

    J'aimerais créer une requête sur BO, grâce à VBA utilisé depuis Excel. Je ne sais pas si cela est possible. Je vous explique cependant ce que je dois faire...


    La requête que je dois créer est très simple:

    - affichage de numéros de sinistre et de numéros d'immatriculation
    - condition: numéros de sinistre dans la liste X

    La liste X est du type: numéro1;numéro2;numéro3 . Je possède cette liste X dans la cellule B1 d'une feuille Excel.

    Il faudrait donc que, à partir de VBA-Excel, je puisse créer cette requête, copier la liste X dans la condition de cette requête et lancer la requête ainsi créée.



    Est-il possible de créer de telles requêtes BO depuis VBA-Excel?
    Si non, une fois qu'un rapport est ouvert, est-il possible d'ouvrir l'éditeur de requête de BO et de modifier la requête du rapport (afin de mettre la bonne liste X présente dans la cellule B1, j'aurai en effet besoin plus tard de relancer cette requête avec une liste X différente), toujours grâce à VBA-Excel?


    Je sais, depuis VBA-Excel, ouvrir BO et ouvrir un rapport. Voici le code que j'ai récupéré sur le net:

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Sub openBO()
    Dim objBO, objrep
    Set objBO = CreateObject("BusinessObjects.Application")
    objBO.LoginAs , , True
    Set objrep = objBO.Documents.Open("monchemin\monrapport.rep")
    objBO.Visible = True
    End Sub
    Je bloque pour créer ou bien pour modifier la requête BO présente dans monrapport.rep . Peut-être faut-il passer en SQL? J'ai tenté de créer des Query en utilisant leur propriété SQL mais en vain. Voici le code que j'ai eu en m'inspirant d'autres codes chopés sur le net:

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim req As Query
    Dim chaine As String
    chaine = "moncodeSQL"
    Set req = objBO.createquerydef()
    req.Sql = chaine
    req.Close
    objrep.Refresh
    Ce code doit être bourré d'erreurs! J'obtiens le message suivant: "Erreur d'exécution 438: propriété ou méthode non gérée par cet objet"
    J’ai essayé de mettre objrep.createquerydef(), même message d’erreur. Je sais bien que objBO et objrep ne sont pas des objets « connection » ou « database » mais je n’avais pas d’autre idée…

    Quelqu’un aurait-il une idée ou un conseil à me donner ? Je vous remercie d’avance

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonjour,
    J'ai deux questions :
    • Pourquoi ne peux tu pas utiliser VBA en V5 ?
    • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    • Pourquoi ne peux tu pas utiliser VBA en V5 ?

      Je pense que l'entreprise dans laquelle je suis à configuré BO de sorte qu'on ne puisse pas utiliser VBA. Du coup je n'y ai pas accès. Je ne peux donc utiliser VBA que grâce à Excel.

    • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?

      Et bien, j'ai déjà créé la requête qui m'intéresse en mettant en condition une certaine liste de numéros de sinistre. Cette requête se trouve dans un rapport et elle fait appel à des données se trouvant dans un univers, disons A. J'ai ensuite essayé ce que tu m'as dit: j'ai créé un fournisseur de données d'après ma feuille excel (ce fournisseur contient donc une cellule dans laquelle il y a la liste X). Cependant, une fois le fournisseur de données créé (nommé F1) je ne vois pas comment il est possible de modifier ma première requête en mettant comme condition:

      numéro de sinistre DansListe [la liste X qui est dans la cellule 1 du fournisseur F1]

      car en effet lorsque je vais dans "l'éditeur de fournisseur de données" correspondant à ma requête, je ne peux accèder qu'aux classes et objets de mon univers A et en aucun cas aux données se trouvant dans le fournisseur de données F1.


    Est-il possible de faire une requête en utilisant des données qui se trouvent dans un autre fournisseur de données? Ce serait vraiment bien mais je ne vois pas comment cela est possible. Peut-être pensais-tu à autre chose en me parlant du fournisseur de données, mais je ne vois pas quoi. (Mes connaissances en BO sont "bonnes" pour des tâches pas trop complexes, je me suis mal exprimée, désolée!) Je te remercie de ton aide.

  4. #4
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Malheureusement, ce n'est possible qu'à partir de la version 6

    As-tu essayé de synchroniser tes deux requêtes ?
    Dans le Gestionnaire de données ...
    Puis :
    Comment n'afficher que les lignes communes des requêtes synchronisées ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Le problème de synchroniser les requêtes puis de n'afficher que les lignes qui sont communes aux deux requêtes est le suivant (si j'ai bien compris le principe de la synchronisation): cela suppose que ma première requête affiche TOUS les numéros de sinistres possibles et les numéros d'immatriculation associés. Ainsi, comme la deuxième requête contient les numéros de sinistre qui m'intéressent, je pourrai avoir seulement ces numéros de sinistre et leur numéro d'immatriculation. Cependant il est impossible d'afficher tous les numéros de sinistre sans mettre de condition de temps (sinon j'aurai tous les sinistres de ma base de données depuis qu'elle a été créée!!!), et je ne peux pas mettre cette condition de temps pour différentes raisons.

    Comme je n'ai pas BO version 6 pour utiliser les données d'un autre fournisseur et comme la synchronisation ne me semble pas judicieuse pour mon problème, il faut que je trouve une autre solution. J'en reviens donc à mon idée de départ: est-il possible de modifier les conditions d'une requête existante grâce à VBA-Excel? Autrement dit, si cela est possible, comment, depuis VBA-excel, ouvrir l'éditeur de requête et modifier dans la condition les valeurs que peut prendre un objet? (tout en sachant que la valeur que je veux attribuer à cet objet est stockée dans une feuille excel...).

    Je te remercie pour tes conseils

  6. #6
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Pour pouvoir synchroniser tes deux requêtes, il faut que ta liste dans excel ne soit pas dans une cellule unique (1 seule ligne ramenée), mais en colonne (une colonne numéro de sinistre et autant de lignes que de numéros)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Alors je viens chercher ce sujet après 7 ans de son évocation ! Je cherche moi aussi a développé un macro VBA sur BO (v6.5) pour créer et exécuter un ensemble de requêtes. Le problème c'est que je ne suis pas habitué à BO (au contraire avec vba excel) et j'ai pas trouvée de documentation dans ce sens.
    une autre question: est ce que ce n'est pas préférable de travaillé avec un vba excel qui lance des requêtes BO au lieu d'un macro BO?

Discussions similaires

  1. [AC-2003] Créer une requête sous vba access
    Par facteur dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/01/2013, 12h03
  2. [AC-2003] Créer une requête spécifique en vba
    Par saigon dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/04/2011, 14h24
  3. [AC-2003] Créer une Requête depuis VBA Access
    Par Goupo dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/02/2011, 00h08
  4. [ABAP] Comment créer une requête avec jointure
    Par roadster62 dans le forum SAP
    Réponses: 1
    Dernier message: 21/02/2006, 16h04
  5. [HTTP]Créer une requête http multipart/related
    Par jothi35 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2005, 15h32

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