remplir un tableau avec un listing
Bonjour à toutes et à tous,
Je dois pré remplir un tableau avec des données provenant d'un listing.
Pour cela j'ai un classeur contenant 2 feuilles ( Modèle et Base Listing ), la première feuille contient le tableau vide (qui servira de "modèle"), et la 2e contient le fameux listing.
Les données du listing sont du type:
Nom Commune / Type Objet / Référence Objet / Adresse Objet
Jusque la, j'ai réussi à "nettoyer" le listing, je peux dire combien j'ai de communes, et combien j'ai d'objet dans chaque commune (grâce à un tableau croisé (sur une feuille "TC") qui me sert d'intermedaire, il y avait peut être plus simple mais ça fonctionne).
j'ai aussi réussi à créer autant de feuille que de commune mais après je sèche….
Il me reste à :
Renommer chaque feuille avec le nom d'une commune (j'y suis presque, mais…)
Et recopier le "modèle" de tableau sur chaque feuille (je pense faire un simple copié / coller dans ma boucle de création des feuilles…)
Recopier chaque commune en dessous de chaque tableau avec les données liées à chaque commune
En attendant voilà mon code (Je bosse sur excel 2000):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Sub TC_pi()
'
' TC_pi Macro
' Macro enregistrée le 12/03/2010
'
'positionnement sur la feuille Base Listing en A1
Sheets("Base Listing").Select
Range("A1").Select
Selection.CurrentRegion.Select
'Tri par ordre croissant des communes
Selection.Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Création d'un Tableau croisé Dynamique Variable
DerniereLigne = Range("A1").End(xlDown).Row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Base Listing'!R1C1:R" & DerniereLigne & "C4").CreatePivotTable TableDestination:="", _
TableName:="Tableau croisé dynamique3"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)
ActiveSheet.Cells(1, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").SmallGrid = False
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddFields RowFields:= _
"Commune"
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Commune"). _
Orientation = xlDataField
'renommer la feuille du tc (n°2) en "TC"
Sheets(2).Name = "TC"
' Selection du tableau et Copier/Collage spacial "valeur"
Range("A1").Select
ActiveCell.CurrentRegion.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
' Suppression des 2 ere lignes "inutiles"
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
' definir le nombre de commune en D1
Nb_Commune = WorksheetFunction.CountA(Range("a:a")) - 1
Range("D1").Select
ActiveCell = Nb_Commune
' Définir le nombre d'onglet à créer en fonction du nombre de communes
Range("a1").Select
For i = 1 To Nb_Commune
Sheets.Add
Sheets(2).Name = i 'à la place du i ' la place du i je dois dire de prendre la premiere valeur du tableau croisé
Next
Dim Nom_feuille As String
'selectionner la liste des communes (colonne a:a)
' Renommer chaque onglet avec les noms des communes
' Copier la base du tableau pour le pré-remplissage dans chaque onglet
' copier les données de chaque commune
End Sub |
Bon il est claire que mon code va en faire hurler quelques uns....alors pitié,pas tapper...:calim2: