6 Replies Latest reply: Jan 12, 2018 3:44 AM by Philippe Mahieu RSS

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

    Philippe Mahieu

      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

        • Re: Modification du format de date lors de l'exportion dans excel via macro
          Cyrille zouhon

          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.
            • Re: Modification du format de date lors de l'exportion dans excel via macro
              Philippe Mahieu

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

               

               

               

               

            • Re: Modification du format de date lors de l'exportion dans excel via macro
              Sébastien Fatoux

              Bonjour Philippe,

               

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

                • Re: Modification du format de date lors de l'exportion dans excel via macro
                  Philippe Mahieu

                  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

                    • Re: Modification du format de date lors de l'exportion dans excel via macro
                      Sébastien Fatoux

                      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?

                        • Re: Modification du format de date lors de l'exportion dans excel via macro
                          Philippe Mahieu

                          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