oguruma
XLDnaute Impliqué
Bonsoir Patrick,ben c’était déjà le cas
maintenant si tu parle du pdatabody qui changerait éventuellement dans le instanciate en fonction des choix c'est une belle erreur de faire ça
pourquoi:
et bien par ce que ca te bloque de toute évolution puisque tu travaillera avec un seul range
la méthode que j'ai employé c'est 4 variables global module elle sont bien instruite dans le instantiate mais c'est tout
on a le hasheaderrow booleen
le hastotalrow booleen
le pdataheader range pour le header
ptotalbody range pour la ligne total
ses 4 variables sont disponibles dans tout les fonctions du module et je m'en sert dans les 3 fonctions xml et la html
c'est pas bon de tout centrer dans une seule variable
mais bon c'est ton bébé j'ai juste apporté un peu de technique du DOM
Après "moult" réflexions car ça m'a un peu "turlupiné"... et il n'y a que les ImBBBbbb...le qui ne changent pas d'avis.... 🙂
Petite prise en compte d'une de tes remarques sur l'instanciation à propos du passage des deux derniers paramètres...
Une v2.01 a donc été jointe ICI
Ainsi on le choix entre les deux méthodes.
Bien entendu on a toujours les deux inverseurs qui peuvent modifier les choix pris par défaut à l'instanciation puisqu'elle cherche à les embarquer automatiquement avec bien entendu le test de la présence de la ligne total - ceci n'a pas changé 🙂
VB:
' L'instanciation se résume donc à ceci et sans les deux derniers booléens de la v2.0
'****************************************************************************************
Sub INSTANCIATE_02()
Set oTS = New CLS_TS
Call oTS.Instantiate(TBL_TS_02, FEUILLE_TS_02)
End Sub
'******************************************************
'* Un exemple
'******************************************************
Sub exportToCSV_03()
Call createFolderCSV
Call INSTANCIATE_02
oTS.IncludeLineHeader = True
oTS.IncludeLineTotal = False
Call oTS.exportToCSV(ThisWorkbook.Path & "\TEST_CSV\TestExportToCsv01_03.csv", Chr(9), True)
End Sub
'***********************************************
'* INSTANICATION
'**********************************************
Sub Instantiate(hTB As String, _
Optional hWk As String = "§_§ACTIVESHEET§_§") '**** suppression des deux booléens *****
Dim wk As Worksheet
If hWk = "§_§ACTIVESHEET§_§" Then
Set wk = ActiveSheet
Else
If Not pOTools.wkExist(pWb_MACRO, hWk) Then
Err.Raise _
ERROR_MESSAGE, _
ERROR_SOURCE, _
ERROR_MSG & " : La feuille " & hWk & " est inconnue"
Else
Set wk = pWb_MACRO.Worksheets(hWk)
End If
End If
' On va vérifier sa présence pour ne pas planter
'------------------------------------------------
If Not pOTools.exitsTS(hTB) Then
Err.Raise _
ERROR_MESSAGE, _
ERROR_SOURCE, _
ERROR_MSG & " : Le tableau " & hTB & " est inconnu"
End If
' Initialisation des accès aux données du tableau
'------------------------------------------------
Set pTable = wk.ListObjects(hTB)
Set pRange = Range(hTB & "[#All]") ' V1.05 ça manquait, prévu mais non initialisé
' On va gérer les lignes titre et total
'--------------------------------------
pHasTotalRow = False
pIncludeTotal = False
pIncludeHeader = False
Set pDataTotalBody = Nothing
' Gestion de la ligne total
'--------------------------
pIncludeTotal = True ' Par défaut on souhaite inclure la ligne total dans les exports
pHasTotalRow = wk.ListObjects(hTB).ShowTotals = True ' MAIS :=> On vérifie si cette ligne total existe réellement !
If pHasTotalRow Then
Set pDataTotalBody = wk.ListObjects(hTB).TotalsRowRange ' Dans ce cas OUI on la récupère
End If
' Gestion de la ligne titre des colonnes
'---------------------------------------
pIncludeHeader = True ' Par défaut on souhaite inclure la ligne titre de colonnes dans les exports