Qlik Community

Ask a Question

Groupe des Utilisateurs Francophones

Announcements
2021 Gartner® Magic Quadrant™ for Data Integration Tools. See why Qlik was recognized yet again GET REPORT
cancel
Showing results for 
Search instead for 
Did you mean: 
mahieuphilippe
Creator
Creator

Modification du format de date lors de l'exportion dans excel via macro

Bonjour à tous,

J'ai actuellement un tableau que exporte dans excel via une macro,  le problème est lorsque j'ouvre excel, le format a été modifié mais uniquement pour les valeurs de cette année et pas les autres.

001.JPG

en exportant manuellement le result est correct

002.JPG

en utilisant la macro  ll modifie  la propriété de la cellule (les autres sont en standard et les deux dernières en personnalisée)

003.JPG

voici la formule du champs week

Num (week(Jobexec_date),'00') & '-' & (Year(Jobexec_date)) as SEMAINE2018,

quelqu'un a une idée pourquoi il interprète différement  certaines valeurs ?   où faut il forcer le système  ?

d'avance merci

6 Replies
cyrzouhon
Contributor III
Contributor III

Bonjour, peux tu nous donner le format de de ton champs Jobexec_date?

week ('2012-10-12')

renvoie 41.

week( '35648')renvoie 32, car 35648 = 1997-08-06.
week('2012-10-12', 0, 1)renvoie 42.
mahieuphilippe
Creator
Creator
Author

Bonjour Cyrille,

merci déjà d'avoir répondu au post

pour être précis la declaration de la semaine  vient de deux sources differents et deux champs differents :

de la première source voici l'expression

num (week (Date(Date#(RRFDAT, 'YYYYMMDD'))),'00') & '-' & Year(Date(Date#(RRFDAT, 'YYYYMMDD'))) as SEMAINE2018,

voici le format du champs RRFDAT


Date(Date#(RRFDAT, 'YYYYMMDD')) as RRFDAT  dans  le tableau la date apparait comme ceci :

 

   

RowNo()MOISRRFDATLineRRMNTTRRRPITRRTIME
2633janv.2018/01/08202,48
2634janv.2018/01/0820,62,58
2635janv.2018/01/08202,48
2636janv.2018/01/08400,18
2637janv.2018/01/084008

pour la deuxième expression :

Num (week(Jobexec_date),'00') & '-' & (Year(Jobexec_date)) as SEMAINE2018,

voici le format du champs 'jobexec date'

'2016-04-01'

j'espère que c'est plus clair ...

sfatoux72
Partner
Partner

‌Bonjour Philippe,

Dans ta macro, tu crées un nouveau fichier Excel ou tu utilises un fichier Excel existant pour effectuer ton exportat ?

mahieuphilippe
Creator
Creator
Author

Bonjour Sébastien,  tout d'abord meilleur vœux pour 2018 !! 

le fichier existait déjà, ce qui se passe c'est qu'il crée automatiquement un nouvel onglet à chaque mardi de la semaine.

Pour la petite histoire, au début  la valeur de la colonne était simplement le chiffre de la semaine année 2017

 

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

52

mais avec l'arrivée de la semaine 01 de 2018,  il fallait distinguer les semaines de 2017 et 2018 et l'intégrer de façon logique :

11-2017

12-2017

01-2018

02-2018

et donc début d'année j'ai modifier  la formule pour intégrer l'année.

um (week (Date(Date#(RRFDAT, 'YYYYMMDD'))),'00') & '-' & Year(Date(Date#(RRFDAT, 'YYYYMMDD'))) as SEMAINE2018,

voici le script dans la macro excel qui s'effectue à l'ouverture du fichier :

Sub ExcelExpwCaption

filePath =  l'emplacement du fichier

sheetName = "Week " & Datepart("ww",Date,vbtuesday)-1

Set excelFile = CreateObject("Excel.Application")

     excelFile.DisplayAlerts = False

     excelFile.Visible = true

Set curWorkBook = excelFile.Workbooks.Open(filePath)

numSheet = sheetExists(curWorkBook, sheetName)

if numSheet > 0 then

set curSheet = curWorkBook.WorkSheets(numSheet)

  else

  curWorkBook.Sheets.Add

   Set curSheet = curWorkBook.ActiveSheet

        curSheet.Name = sheetName

end if

j'espère avoir répondu à ta question

Philippe

sfatoux72
Partner
Partner

Le problème vient plutôt d’Excel qui veut bien faire et pensant reconnaître une date au format Mois-Année, Excel change le type de la cellule en Date et applique le format Mois-Année par défaut.

Maintenant, pourquoi est-ce que Excel effectue cet auto formatting avec la macro et pas avec l’extraction manuel. Cela doit certainement être lié avec la façon dont les données sont collées dans Excel.

Peux-tu d’écrire toutes les opérations effectuéles lors ce que tu réalises ton extraction manuelle?

Peux-tu nous fournir la macro utiliséé pour l’extraction par macro?

mahieuphilippe
Creator
Creator
Author

Bonjour Sébastien,

Concernant l'extraction manuelle,  je sélectionne tout simplement l'option ..

004.JPG

Sub ExcelExpwCaption

Sub ExcelExpwCaption

filePath =  l'emplacement du fichier

sheetName = "Week " & Datepart("ww",Date,vbtuesday)-1

Set excelFile = CreateObject("Excel.Application")

     excelFile.DisplayAlerts = False

     excelFile.Visible = true

Set curWorkBook = excelFile.Workbooks.Open(filePath)

numSheet = sheetExists(curWorkBook, sheetName)

if numSheet > 0 then

set curSheet = curWorkBook.WorkSheets(numSheet)

  else

  curWorkBook.Sheets.Add

   Set curSheet = curWorkBook.ActiveSheet

        curSheet.Name = sheetName

end if

voici la partie qui exporte le graphique qui comprend les données

set tableToExport = ActiveDocument.GetSheetObject("CH27")

     Set chartProperties = tableToExport.GetProperties

     tableToExport.CopyTableToClipboard true

     'Get the caption

     chartCaption = tableToExport.GetCaption.Name.v

     'MsgBox chartCaption

     'Set the first cell with the caption

     curSheet.Range("A20") = chartCaption

     'Paste the rest of the chart

     curSheet.Paste curSheet.Range("A21")

  curWorkBook.WorkSheets("Dashboard").Move curWorkBook.WorkSheets(1)

          

     'Save the file and quit excel    

     curWorkBook.SaveAs filePath

    

     excelFile.Visible = true

     excelFile.DisplayAlerts = True

     

         

     'curWorkBook.SaveAs filePath

     curWorkBook.Close

     excelFile.Quit

     'Cleanup

     Set curWorkBook = nothing

     Set excelFile = nothing

End Sub

    

    

    

      

Function sheetExists(curWorkBook, sheetToFind)

    sheetExists = -1

    For i = 1 to curWorkBook.WorkSheets.Count

        If sheetToFind = curWorkBook.WorkSheets(i).name Then

            sheetExists = i

            Exit Function

        End If

    Next

End Function

voila j'espère que cela va t'aider, de mon côté je vais aussi regarder

merci