Bonjour à tous,
je suis desolé de poster un message sur quelque chose qui à peu etre deja été resolé... mais que je n'ai pas reussi à trouver!
je debute en vba et j'ai dans les mains un programme qui utilise des tableau croisés dynamiques. nous avons deux variables pour faire simple: l'année de naissance (va de 1900 à 1960) et l'année (de 2004 à 2009) on compte le nombre de contrats.
je doit donc aller cherche dans un tableau croisé dynamique pour chaque année et chaque année de naissance le nombre de contrats. pour cela, nous avons un tableau vide avec en colonne les années et en ligne les années de naissance jusque là, pas tres compliqué me direz vous.
voici le code...
le probleme intervien lorsqu'il manque une année en effet, en affinant mes stat, certaines années deviennent non renseignées et là... mon programme ne gere plus cet aspect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Stocks() Dim a As Integer, b As Integer, l As Integer, c As Integer Dim Tot_H As Variant, Tot_F As Variant, An_naiss As Variant, Date_liq As Variant For l = 3 To 63 For c = 2 To 9 An_naiss = Worksheets("Stocks").Cells(l, 1).Value Date_liq = Worksheets("Stocks").Cells(2, c).Value Sheets("Tab_stocks").Select Range("C10").Select Tot_H = 0: Tot_F = 0 For a = 1966 To Date_liq For b = Date_liq To 2007 ActiveCell.PivotTable.DataBodyRange ("an_naiss") Tot_H = Tot_H + ActiveCell.PivotTable.GetPivotData("nb_contrats", "CCSEX1", "M", "an_nais", An_naiss, "date_liq", a, "stock", b) Tot_F = Tot_F + ActiveCell.PivotTable.GetPivotData("nb_contrats", "CCSEX1", "F", "an_nais", An_naiss, "date_liq", a, "stock", b) Next b Next a Worksheets("Stocks").Cells(l, c).Value = Tot_H Worksheets("Stocks").Cells(l, c + 9).Value = Tot_F Next c Next l End Sub
Je cherche donc à recuperer les valeurs prises par la variable an_naiss pour n'appeler que les années effectivement presentes dans le TCD et ainsi eliminer mon probleme, mais comment proceder?
avez vous une idée ou mieu encore, un autre solution à mon probleme qui serais plus optimale...
merci d'avance pour votre aide
SERRANIC
Partager