Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Générer un rapport et envoie automatique

Bonjour à toutes et à tous,

Voici mon soucis : J'aimerais générer un rapport automatiquement, l'enregistrer en PDF ou en EXCEL (c'est une "Zone table") puis l'envoyer par mail automatiquement, 1 fois par jour. Pour générer le rapport je vais dans "Editer un rapport".

Après quelques recherches je n'ai trouvé que comme solution (sauf si j'ai mal cherché) l'utilisation de "NPrinting" mais il faut une licence. J'ai vu aussi qu'on pouvait utiliser un script VBS, ou alors PDF-Echange mais là aussi il faut une licence.

Avez-vous une autre solution que celles-ci ? (Non payante)

Je vous remercie d'avance,

Cordialement

Antony Hoarau

6 Replies
ogautier62
Specialist II
Specialist II

Bonjour,

voilà deux macros,

pour les envoyer utiliser les actions,

par exemple en post load

cdt

sub ExportExcel (NomRapport)

set XLApp = CreateObject("Excel.Application") 'on définit l'objet
XLApp.Visible = false      

set XLDoc = XLApp.Workbooks.Add 'on ajoute un element
'XLDoc.Worksheets(3).Delete 'on supprime les feuilles qui ne nous intéresse pas
'XLDoc.Worksheets(2).Delete 'celle-là aussi


set table = ActiveDocument.GetSheetObject(NomRapport)

       table.CopyTableToClipboard true 'on copie dans le presse-papier

set XLSheet = XLDoc.Worksheets("Feuil1") 'on se met sur la feuille qui nous intéresse
XLSheet.Paste XLSheet.Range("A1") 'on colle le presse-papier à partir de la première cellule (A1)
XLSheet.Name = "Chart " 'on renomme la feuille

XLDoc.SaveAs "I:\Qlik\tests\" & NomRapport & ".xls" 'on enregistre dans un fichier
XLDoc.close
XLApp.Quit  

end sub

function mailrapport(Destinataire,Objet,Libelle,Fichier)

Dim objEmail 
Const cdoSendUsingPort = 2     ' Send the message using SMTP 
Const cdoAnonymous = 0     'Do not authenticate 
Const cdoBasic = 1         'basic (clear-text) authentication      Const cdoNTLM = 2         'NTLM 
SMTPServer = "your smtp-server.fr" 
Const SMTPPort = 25                 ' Port number for SMTP 
Const SMTPTimeout = 60              ' Timeout for SMTP in seconds 

'Sending mail 
Set objEmail = CreateObject("CDO.Message") 
Set objConf = objEmail.Configuration 
Set objFlds = objConf.Fields 

With objFlds 

  '--------------------------------------------------------------------- 
' SMTP server details 
  .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort 
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer 
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous  
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort 
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 
  .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout  
.Update 
'--------------------------------------------------------------------- 
End With 

objEmail.To = Destinataire       'Email Recipient 
objEmail.From = "your e-mail organisation" 'Email Sender 
objEmail.Subject = Objet                    ' Subject 
objEmail.TextBody = Libelle        'Text Body           
objEmail.AddAttachment   Fichier ' Attachement 
objEmail.Send 
Set objFlds = Nothing 
Set objConf = Nothing 
Set objEmail = Nothing 

end function 

Anonymous
Not applicable
Author

Merci beaucoup, j'essaie cette macro et je vous tiens au courant si j'ai des questions.

Cordialement;

Antony Hoarau

ogautier62
Specialist II
Specialist II

oui faut surement adapter un peu,

et en pré requis, SMPT sur le srv QV

cdt

Anonymous
Not applicable
Author

Je n'ai pas de serveur qlikview, en fait j'ai sur une machine virtuel qlikview d'installer mais en personnal edition. Est ce que si je fais un serveur à côté ça peut fonctionner ?

ogautier62
Specialist II
Specialist II

a priori en personnal edition ça devrait etre capable d'envoyer un mail, faut essayer !

Anonymous
Not applicable
Author

Il faut donc que je fasse avec mon propre serveur SMTP ?

Je vais essayer, je vous tiens au courant