IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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

Nombre d'auteurs : 15, nombre de questions : 101, dernière mise à jour : 10 juillet 2013 

 
OuvrirSommaireVBAVBA dans Reporter Deski

Pour cet exemple on suppose que l'utilisateur répond à deux invites :

  • "Année ?" qui retourne une réponse de type numérique
  • "Sur combien de mois ?" qui retourne une réponse de type numérique
 
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

Les réponses stockées dans anref et moisref sont alors utilisables dans la suite du script

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 ni 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.