RE
Cela rejoint ton post https://forum.excel-pratique.com/viewtopic.php?f=2&t=138301&start=10
Tu n'aurais pas ces problèmes en utilisant et gérant correctement des tableaux structurés
Cela existait déjà dans 2003 (sans nom) : depuis, surtout avec 2016, l'eau a coulé sous le pont et tu devrais te servir des possibilités actuelles...
Re, j'utilise les tableaux structurés mais dans le sujet précèdent, y'a un tableau tcd que je souhaite mettre à jour en fonction des données extraites. Sauf que je dois refaire la mise en forme et des différents éléments dans le tableau.
Du coup, je copie le TCD et ensuite la base de données (uniquement concernant le service demandé et je nomme cet base de données), ensuite j'actualise le tcd avec ce nouveau nom. Ensuite pour palier mon problème de lignes vides, j'ai voulu faire un tableau dans le fichier d'origine pour toute la base de données, comme ça la plage évolue avec mes nouvelles données qui s'accumule tout les mois (là où je me suis posée la question pourquoi je ne pouvais pas supprimer ce nom)
Sub ColleEtSauve()
Dim Serv As String
Dim LaDate As String
Dim lastCol As Long, lastRow As Long
myMonth = Application.InputBox("Entrer le dossier du mois en cours / 01 - Janvier 20") 'entré du mois
Serv = Range("B4").Value 'service
LaDate = Format(Date, "YYYY-M-D") 'date
Sheets("DETAILS 20VS19").Copy 'copie du tcd
Sheets.ADD(Before:=Sheets("DETAILS 20VS19")).Name = "SYNTHESE" 'ajout de l'onglet
ThisWorkbook.Sheets("SYNTHESE").Range(Serv).Copy 'copie de la plage du service
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial 8
ThisWorkbook.Sheets("DONNEES").Range("ALLDATA").AutoFilter Field:=21, Criteria1:= _
Serv 'copie des données uniquement du service concernés
ThisWorkbook.Sheets("DONNEES").Range("ALLDATA").Copy
Sheets.ADD(After:=Sheets("DETAILS 20VS19")).Name = "DONNEES"
ActiveSheet.Paste
lastCol = Sheets("DONNEES").Cells(1, Columns.Count).End(xlToLeft).Column
lastRow = Sheets("DONNEES").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("DONNEES").Cells(1).Resize(lastRow, lastCol).Name = "ALLDATA"
Sheets("DETAILS 20VS19").PivotTables("TCDATA").PivotSelect "", xlDataAndLabel, True
Sheets("DETAILS 20VS19").PivotTables("TCDATA").ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:="=ALLDATA", Version:=6)
Sheets("DETAILS 20VS19").PivotTables("TCDATA").PivotCache.Refresh
Sheets("DETAILS 20VS19").PivotTables("TCDATA").SaveData = True
Sheets("SYNTHESE").Select
ActiveWorkbook.SaveAs Filename:= _
Voilà le code, je suis débutante : je suis certaine que c'est pas le code le plus 'propre' mais bon ça fonctionne.
Manque juste quand je sélectionne le tableau nommée ALLDATA et que je copie dans un nouveau fichier, cela ne prend pas les en-têtes, du coup l'actualisation de mon TCD ne fonctionne pas
Merci à tous,