F.A.Q. Business-ObjectsConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 101, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireVBAVBA dans Reporter Deski
 
Sélectionnez
Public Sub mesinvites()
'Bruno Roman-Ruiz http://bruno-roman-ruiz.developpez.com/index/
'20080207 22:00 BO V6.5.1
'Lister les variables crées par l'utilisateur
Dim Doc As Document
Dim DpVars As Variables
Dim DpVar As Variable
Dim txt As String
Dim nbv As Integer

Application.Interactive = True
Set Doc = Application.ActiveDocument
Set DpVars = Doc.Variables
txt = ""
nbv = 0

For Each DpVar In DpVars
nbv = nbv + 1
txt = Chr(10)& Chr(10) & " [" & nbv & "] Variable "& DpVar.Name & Chr(10) & "Valeur : " & DpVar.Value
Debug.Print txt
Next

Debug.Print Chr(10) & Chr(10) & Doc.Name & " contient " & nbv & " variables :"
End Sub
Créé le 25 janvier 2008  par Bruno2r

Voici un petit script de procédure qui établit la liste dans la fenêtre d'exécution des variables créées par l'utilisateur :

 
Sélectionnez
Public Sub mesvariables()
'Bruno Roman-Ruiz http://bruno-roman-ruiz.developpez.com/index/
'20080207 22:00 BO V6.5.1
'Lister les variables crées par l'utilisateur
Dim Doc As Document
Dim DocVars As DocumentVariables
Dim DocVar As DocumentVariable
Dim txt As String
Dim nbv As Integer

Application.Interactive = True
Set Doc = Application.ActiveDocument
Set DocVars = Doc.DocumentVariables

txt = ""
nbv = 0
For Each DocVar In DocVars

If DocVar.Name élt; > "" Then
nbv = nbv + 1
txt = Chr(10) & Chr(10) & " [" & nbv & "] Variable " & DocVar.Name & Chr(10) & DocVar.Formula
Debug.Print txt
End If
Next
Debug.Print Chr(10) & Chr(10) & Doc.Name & " contient " & nbv & " variables :"

End Sub

Attention ! Ne pas confondre :
Application.ActiveDocument.DocumentVariables Collection des objets Variables créées dans le document par l'utilisateur Application.ActiveDocument.Variables Collection des objets Variables créées dans le fournisseur de données (requête)

Créé le 8 mars 2008  par Bruno2r

Utiliser la propriétée Application.Interactive

Cette méthode supprime ou autorise (False/True) les demandes de confirmation et les notifications à l'utilisateur.

 
Sélectionnez
Private Sub Document_BeforeRefresh(Cancel As Boolean)
Application.Interactive = False
End Sub

Private Sub Document_AfterRefresh()
Application.Interactive = True
End Sub

Attention ! Cette désactivation
* porte sur le rafraichissement du document (plus de message La Requête ne retourne pas de données)
* supprime également l'affichage des invites ! (conservant les réponses antérieures)
* ne fonctionne pas si on fait exécuter dans l'éditeur de requête

Pour désactiver l'interaction sur le SQL à la carte sans invite,
et la réactiver sur les autres requêtes avec invite,
il faudrait à l'ouverture par exemple :
* parcourir les dataproviders * et avec un select case basé sur le nom ou le type faire précéder le refresh d'une gestion de l'interactivité

Créé le 4 février 2008  par Bruno2r

Dès la version 5 de Business Objects, il est possible d'appliquer la méthode ExportAsPdf à chaque rapport.
On peut également poser un test sur le non du rapport pour ne pas appliquer cet export à l'un d'entre eux.

Utiliser le script suivant :
Sélectionnez
Private Sub Document_AfterRefresh()
Dim Doc As Document
Dim reps As Reports
Dim rep As Report
Dim repname As String
Dim chemin As String
 
chemin = "C:\"
Set Doc = Application.ActiveDocument
'------- Récupération de la collection
Set reps = Doc.Reports
 
' -------- Récupérer les rapports -------
' -----Parcourir les objets de la collection rapports
For Each rep In reps
' ----- Limitation au rapports à exporter
    repname = rep.Name
    repname = Replace(repname, Chr(34), "_")
    repname = Replace(repname, Chr(42), "_")
    repname = Replace(repname, Chr(47), "_")
    repname = Replace(repname, Chr(58), "_")
    repname = Replace(repname, Chr(60), "_")
    repname = Replace(repname, Chr(62), "_")
    repname = Replace(repname, Chr(63), "_")
    repname = Replace(repname, Chr(92), "_")
    repname = Replace(repname, Chr(124), "_")
    If repname < > "PasCeluiLà" Then
        rep.ExportAsText chemin & repname & ".pdf"
    End If
Next
Créé le 10 avril 2008  par Bruno2r
En Version 5 les exports possibles en VBA sont :
  • DataProvider.ExportToRDBMS
  • Document.ExportAsPDF
  • Document.ExportSheetsAsHtml
  • Report.ExportAsHtml
  • Report.ExportAsPDF
  • Report.ExportAsRtf
  • Report.ExportAsText
A partir de la Version 6 sont ajoutés :
  • Document.ExportAsXML
  • Report.ExportAsExcel
  • Report.ExportAsHtmlPage
Créé le 10 avril 2008  par Bruno2r

L'objectif est de réaliser automatiquement après chaque rafraichissement les tâches suivantes :

  • Déterminer le nombre de rapports (onglets) dans le document.
  • Parcourir ces différents rapports.
  • Appliquer sur chacun d'eux un filtre.
  • Recalculer le document BO.
  • Exporter en pdf.
 
Sélectionnez
Document_AfterRefresh()
 
Dim Dpc As Document
Dim Reps As Reports, Rep As Report
Dim nbr As Integer, nir As Integer
 
'ces 3 premières déclarations seraient mieux positionnées
' dans Général Déclarations
 
Dim AnneeRef As String
 
Set Doc = Application.ActiveDocument

Set Reps = Doc.Reports
nbr = Reps.Count


'pour exemple on posera un filtre sur l'année 2008
AnneeRef = "2008"

'pose du filtre sur chaque rapport 
For Each Rep In Reps
Rep.Activate
Rep.AddComplexFilter "Exercice", "[Exercice] = " & AnneeRef

'recalcul de l'ensemble du document
Rep.ForceCompute
Next

'export du document
Rep.ExportAsPDF ("C:\le chemin....\DocsPDF\NomFichier_" & AnneeRef & ".pdf")
 
End Sub
Créé le 10 avril 2008  par Bruno2r
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.