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 :

[BO 5]][VBA] Quitter sans sauver


Sujet :

SDK

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut [BO 5]][VBA] Quitter sans sauver
    Bonsoir à tous, j'ai une petite question bete.
    J'ai fait une macro pour ouvrir, rafraichir etc BO depuis une macro sur excel, mais j'ai pas trouvé comment quitter BO sans sauvegarder...
    Ah et j'ai ça qui s'affiche quand BO rafraichi (cela prend un moment) "Excel attend la fin de l'action OLE d'une autre application" un truc du genre, y'aurais t'il moyen que cela n'apparaisse pas ?
    Merci et bonne fin de journée !

  2. #2
    Membre expérimenté
    Avatar de bastoonet
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Septembre 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 011
    Points : 1 342
    Points
    1 342
    Par défaut
    et bien enregistrer le .rep sous un nom bidon dans la corbeille ou ailleurs !!

    ...sinon il doit bien y avoir moyen de "killer le processus"...mais c pas très propre...
    ~ Bastoonet ~

    Consultant BI

  3. #3
    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
    Salut yoann7,
    Compte tenu que tu lances l'ouverture du document BO et le rafraîchissement du ou des fornisseur(s) de données à partir d'une Macro Excel, ça ne devrait pas te poser de problème d'utiliser VBA pour fermer ton document.
    1. Atteindre Outils/Macro/Visual Basic Editor ou Alt + F11
    2. En haut de page, deux listses déroulantes (si elles n'y sont pas sélectionner ThisDocument à gauche dans la fenêtre Projet)
    3. Dans celle de gauche (Général) & Document, choisir Document
    4. Dans celle de droite, choisir AfterRefresh
    Puis compléter de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Document_AfterRefresh()
    Application.ActiveDocument.Close (boDontSave)
    End Sub
    La closeOption facultative (par défaut sans enregistrer) peut être choisie parmi les trois suivantes :
    boSaveIfModified Enregistrer avant d fermer(=1)
    boDontSave Ne pas enregistrer avant de fermer (=2). Par défaut
    boPromptUser Demander à l'utilisateur (=3)

    C'est ... Basic
    Bonne journée
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Oui très basique en effet...
    Mais... j'ai un soucis j'ai déjà du code en thisdocument, pour faire un export sur evenement (rafraichissement), et quand je rajoute le code pour fermer sans sauver ça ne fonctionne plus...
    D'ailleurs je n'arrive à exporter que le rapport 1...
    (juste pour info je suis sur BO 5).
    Désolé pour mes questions à la con mais je ne suis encore qu'un apprenti developpeur

  5. #5
    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
    Nous sommes tous des "apprentis" .. de ce que nous maîtriserons demain !

    Il nous faut ton code AfterRefresh si nous voulons comprendre
    et avec le rajout fermer sans sauver ...
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    alors j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Document_AfterRefresh()
     
    Dim doc As Report
     
    Set doc = Application.ActiveDocument.Reports.Item(1)
    doc.Activate
     
     
    ActiveReport.ExportAsText ("G:\TMUB\Logistique\Appro\test\Suivi Affaire\requêtes BO\extract\OA.xls")
    Application.ActiveDocument.Close (boDontSave)
    End Sub
    ou comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Document_AfterRefresh()
     
    Dim doc As Report
     
    Set doc = Application.ActiveDocument.Reports.Item(1)
    doc.Activate
     
     
    ActiveReport.ExportAsText ("G:\TMUB\Logistique\Appro\test\Suivi Affaire\requêtes BO\extract\OA.xls")
     
    Private Sub Quitter_Document_AfterRefresh()
    Application.ActiveDocument.Close (boDontSave)
    End Sub
    C'est un code que j'ai trouvé sur ce forum

    Alors en fait l'export fonctionne mais la macro excel me rapporte que objrep.Refresh n'a pas put être exécuté correctement. (faudrait que je pense à noter correctement les messages d'erreur...)

  7. #7
    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
    Bon je recommence (électriciens pas en grève nous ont coupé l'alim sur onduleur !!!!! je finissais de rédiger ...)

    Pourquoi lancer le Refresh depuis excel ?
    Tu peux paramétrer le fournisseur de données en rafraîchissement automatique
    Tu peux lancer le Refresh en VB sur ouverture du document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub Document_Open()
    Application.ActiveDocument.Refresh
    Ensuite si tu n'obtiens qu'un rapport c'est parce que ta méthode ExportAsText s'applique au document actif
    (le sauvegarder sous Microsoft Excel Worksheet n'apparaît qu'en version 6)
    il te faudra donc
    faire une boucle sur le nombre de rapports
    et por chacun récupérer le nom dans une variable pour nommer ton fichier xls

    Quand à la fermeture
    Application.ActiveDocument.Close (boDontSave)
    devrait marcher ...?
    Peux tu essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Application.Quit
    et tester en utilisant en début de code 
    Set Application.Interactive = True puis = False
    pour voir si ça change quelque chose j'y crois pas trop..
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Alors en fait ça marche pour quitter sans sauver, c'était juste à cause de mon code pour rafraichir que cela posait problème, mais j'ai enlevé l'erreur et ça passe nikel.
    Merci BRUNO2R
    Hum sinon pour exporter l'autre rapport avec la boucle tu pourrais m'expliquer ?
    Et as tu déjà eu ça "Microsoft Excel attend la fin OLE d'une autra application"? et sais tu l'enlever ?
    Merci

  9. #9
    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 Microsoft Excel attend la fin OLE d'une autra application
    Je n'ai jamais pratiqué d'OLE AUTOMATION Excel vers BO.

    Mais ce que je t'expliquais dans ma dernière réponse c'est que :
    Ta macro Excel peut ouvrir le document Bo
    Elle n'a pas besoin d'ouvrir un canal de comunication vers BO pour lancer le Refresh
    Puisque ce dernier peut être intégrer à ton code VB dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub 
    Document_Open()
    Application;ActiveDocument.Refresh
    Tu peux d'ailleurs laisser le reste du code dans Dès lors Excel ouvre le .rep
    • A l'ouverture celui ci lance le refresh
    • Et après le refresh il exporte et ferme.
    Pour ce qui est de l'export des différents rapports (onglets)
    1. Il te faut :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Compter le nombre de Reports
    2. Faire une boucle sur i de 1 à nbreports
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Pour chacun d'entre eux 
l'activer
récupérer le nom dans une variable
exporter dans un fichier dont le nom peut reprendre le Report.Name stocké dans la variable concaténé avec la date ou dateheure
Allez cherche un peu ...

Pour ma part je privilégie la méthode suivante :

Dans BO
  • Gestionnaire de données
  • Exporter
  • Copier vers DDE
Dans Excel
  • Coller avec liaison dans une feuille que j'appelle Data et sur laquelle pointent les formules de mes tableaux
  • L'ouverture de BO et son Refresh une fois fait
  • La mise à jour des liaisons impactes tous les tableaux
Précisez la VERSION !
Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
Tutoriels BO et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  • #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Alors maintenant mon code c'est ça sur BO:
    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
    Private Sub Document_AfterRefresh()
     
    Dim doc As Report
    Dim doc2 As Report
     
    Set doc = Application.ActiveDocument.Reports.Item(1)
    doc.Activate
    ActiveReport.ExportAsText ("G:\TMUB\Logistique\Appro\test\Suivi Affaire\requêtes BO\extract\OA.xls")
     
    Set doc2 = Application.ActiveDocument.Reports.Item("Rapport2")
    doc2.Activate
     
    ActiveReport.ExportAsText ("G:\TMUB\Logistique\Appro\test\Suivi Affaire\requêtes BO\extract\POA.xls")
     
    Application.ActiveDocument.Close (boDontSave)
     
     
    End Sub
    Tout marche nikel mes exports se font sauf que quand c'est fini et bien il me sort un mémoire ne peut pas être read avec un rapport a transmettre a l'equipe technique de business object....


    edit: bon en fait quand je lance mon prog principal en appelant les parti de code tout marche nikel.

  • #11
    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
    Bon là ça sent le bug version 5 (élevage de scarabés)

    Je ne vois plus qu'une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    utiliser
    SendKeys ¨^(W)"
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  • #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    ça sert à faire quoi exactement ça ?
    Se serait donc un bug ?...

    Rooo je galère la, quelqu'un saurait il appliquer une formule qui est dans une cellule sur toute une colonne mais avec un nombre de ligne variable ?
    La j'ai essayé en créant dans une cellule un nbval pour avoir le nombre de ligne et reprendre cette valeur avec une variable pour que mon programme colle la formule sur le bon nombre de ligne, mais il veut rien savoir...

    En tout cas j'en aurais apprit en faisant ce programme et la j'en suis qu'a 5% de l'avoir fini...

  • #13
    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
    1ère question : Ca sert à quoi ?
    Ca exécute Ctrl + W équivalent à Ctrl+F4 ou Fermer

    Pour l'autre problème, crée un nouveau sujet, c'est pas pour être chiant c'est pour garder dans ce forum des sujets en rapport avec le contenu des échanges.
    Merci
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  • #14
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    aaaah ok ! Merci beaucoup !
    D'accord je vais créer un nouveau sujet !

  • #15
    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
    Merci pour ta compréhension
    Tu ne nous a pas dit si la méthode du SendKeys ¨^(W)" = Ctrl + W fonctionnait ....
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  • #16
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    hum je n'ai pas essayé, si j'ai le temps dans la journée je le ferais !
    Merci beaucoup pour tes réponses!

  • + Répondre à la discussion
    Cette discussion est résolue.
    ActualitésFAQ BIFAQ CR

    Discussions similaires

    1. [VBA Word] Next sans for
      Par Dobyan08 dans le forum VBA Word
      Réponses: 6
      Dernier message: 20/10/2016, 10h57
    2. [XL-2003] VBA : stocker sans doublon
      Par Djohn dans le forum Macros et VBA Excel
      Réponses: 4
      Dernier message: 01/04/2010, 17h13
    3. [VBA] "Expression sans paramètre"
      Par mathilde50 dans le forum Access
      Réponses: 19
      Dernier message: 22/11/2006, 19h17
    4. Fermer la fentre sans quitter le programme?
      Par tomburn dans le forum OpenGL
      Réponses: 13
      Dernier message: 06/12/2004, 17h02
    5. [VBA-E] ouvrir un fichier .xls sans executer les macro
      Par lae_t2 dans le forum Macros et VBA Excel
      Réponses: 2
      Dernier message: 15/01/2003, 17h07

    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