Bonjour,
Je suis nouveau sur le forum ainsi que dans VBA donc je veux d'abord remercier tous ceux qui postent des réponses car c'est d'une grande aide ... (même si je ne comprends pas toujours tout (enfin presque rien !!!).
Comme je suis débutant et dur de la feuille j'essaye de trouver des trucs simples ...
Beaucoup de posts concernent les TCD et voici ma petite contribution (qui a priori fonctionne) sans taper une seule ligne de code.
Lors de l'enregistrement de votre macro mettez sur l'entête de votre tableau source et vous faites :
- CTRL + droite : ce qui permettra de toujours aller à la dernière colonne
- CTRL + bas : ce qui vous emène à la dernière ligne de la dernière colonne
- Sélectionner de cette dernière cellule jusqu'à l'entete de la 1ère colonne
- Continuer la réalisation de votre TCD normalement et tout devraient fonctionner correctement quand vous mettez à jour ...
Si quelqu'un voit des risques concernant la viabilité de cette méthode ou une façon d'accéler le traitement ..., ne pas hésitez à me le dire que je puisse corriger le code ...
Voici le code (il y a un peu de mise en forme mais n'y faites pas trop attention ...).
L'objectif du TCD est de croiser les effectifs d'une direction par agence et type de contrat de travail
_________________________________
Sub TCD_EFF_ETPT()
'
' TCD_EFF_ETPT Macro
' Macro enregistrée le 03/06/2008 par Qasentini
'
'
Sheets("Feuille de calcul").Select
ActiveWindow.LargeScroll ToRight:=3
Range("BO4").Select
Selection.End(xlDown).Select
Range(Selection, Cells(ActiveCell.Row, 1)).Select
Range("A4:BO261").Select
Range("BO261").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Feuille de calcul'!R4C1:R261C67").CreatePivotTable TableDestination:= _
"'[Effectifs OF V3 avec macros (version 4).xls]TCD Effectifs et ETPT'!R9C1", _
TableName:="Tableau croisé dynamique10", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTables("Tableau croisé dynamique10").AddFields RowFields:= _
Array("Agence", "Contrat", "Données")
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif du mois")
.Orientation = xlDataField
.Caption = " Effectifs du mois"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT du mois")
.Orientation = xlDataField
.Caption = " ETPT du mois"
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif entrée")
.Orientation = xlDataField
.Caption = " Effectifs entrés"
.Position = 3
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT entrée")
.Orientation = xlDataField
.Caption = " ETPT entrés"
.Position = 4
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif sortie")
.Orientation = xlDataField
.Caption = " Effectifs sortis"
.Position = 5
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT sortie")
.Orientation = xlDataField
.Caption = " ETPT sortis"
.Function = xlSum
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Range("C9").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique10").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Cells.Select
With Selection.Font
.Name = "Comic Sans MS"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.ColorIndex = xlAutomatic
End With
Cells.EntireColumn.AutoFit
Range("C11:H47").Select
Selection.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range("D11 : D47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("F11:F47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("H11:H47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("A9").Select
End Sub
______________________________
Merci et bonne journée.
Qasentini
Je suis nouveau sur le forum ainsi que dans VBA donc je veux d'abord remercier tous ceux qui postent des réponses car c'est d'une grande aide ... (même si je ne comprends pas toujours tout (enfin presque rien !!!).
Comme je suis débutant et dur de la feuille j'essaye de trouver des trucs simples ...
Beaucoup de posts concernent les TCD et voici ma petite contribution (qui a priori fonctionne) sans taper une seule ligne de code.
Lors de l'enregistrement de votre macro mettez sur l'entête de votre tableau source et vous faites :
- CTRL + droite : ce qui permettra de toujours aller à la dernière colonne
- CTRL + bas : ce qui vous emène à la dernière ligne de la dernière colonne
- Sélectionner de cette dernière cellule jusqu'à l'entete de la 1ère colonne
- Continuer la réalisation de votre TCD normalement et tout devraient fonctionner correctement quand vous mettez à jour ...
Si quelqu'un voit des risques concernant la viabilité de cette méthode ou une façon d'accéler le traitement ..., ne pas hésitez à me le dire que je puisse corriger le code ...
Voici le code (il y a un peu de mise en forme mais n'y faites pas trop attention ...).
L'objectif du TCD est de croiser les effectifs d'une direction par agence et type de contrat de travail
_________________________________
Sub TCD_EFF_ETPT()
'
' TCD_EFF_ETPT Macro
' Macro enregistrée le 03/06/2008 par Qasentini
'
'
Sheets("Feuille de calcul").Select
ActiveWindow.LargeScroll ToRight:=3
Range("BO4").Select
Selection.End(xlDown).Select
Range(Selection, Cells(ActiveCell.Row, 1)).Select
Range("A4:BO261").Select
Range("BO261").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Feuille de calcul'!R4C1:R261C67").CreatePivotTable TableDestination:= _
"'[Effectifs OF V3 avec macros (version 4).xls]TCD Effectifs et ETPT'!R9C1", _
TableName:="Tableau croisé dynamique10", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTables("Tableau croisé dynamique10").AddFields RowFields:= _
Array("Agence", "Contrat", "Données")
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif du mois")
.Orientation = xlDataField
.Caption = " Effectifs du mois"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT du mois")
.Orientation = xlDataField
.Caption = " ETPT du mois"
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif entrée")
.Orientation = xlDataField
.Caption = " Effectifs entrés"
.Position = 3
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT entrée")
.Orientation = xlDataField
.Caption = " ETPT entrés"
.Position = 4
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"Effectif sortie")
.Orientation = xlDataField
.Caption = " Effectifs sortis"
.Position = 5
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
"ETPT sortie")
.Orientation = xlDataField
.Caption = " ETPT sortis"
.Function = xlSum
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Range("C9").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique10").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Cells.Select
With Selection.Font
.Name = "Comic Sans MS"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.ColorIndex = xlAutomatic
End With
Cells.EntireColumn.AutoFit
Range("C11:H47").Select
Selection.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range("D11 : D47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("F11:F47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("H11:H47").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
Range("A9").Select
End Sub
______________________________
Merci et bonne journée.
Qasentini