Getpivotdata lié à un autre tableau

Bonjour à tous,

Je commence sur VBA et je travaille sur une macro qui me permettrait d'extraire ce que j'ai calculé via un pivot table (la probabilité d'être une femme) en fonction de critères qui peuvent changer (taille, age, poids, lunette ou pas, etc. ). Les critères seront sélectionnés par la personne qui utilisera la macro donc ne sont pas fixes, il y en a maximum 7 . Une fois la probabilité extraite, il faudrait que j'arrive à mettre la probabilité correspondante à chaque ligne de mes données brutes dans un autre tableau.

Exemple : j'ai sélectionné deux critères poids et taille dans mon pivot table. Et j'obtiens lorsque que l'individu fait moins de 165cm et et 55kg qu'il y a 90% de chance d'être une femme. Et maintenant, j'aimerais mettre cette probabilité dans le tableau qui contient mes données "brutes", c'est à dire que pour mon exemple, cela serait de mettre 90% en face de chaque ligne avec moins de 165cm et et 55kg.

Je suis sous windows et je travaille avec Office 2010. Le fichier que je mets est très simplifié par rapport à mon vrai doc mais ça devrait être pareil.

Je pense qu'il faut faire une loop qui permette à getpivotdata de "s'adapter " au nombre de critères sélectionnés. J'ai fait ça mais je sais que c'est pas bon :

Sub prob()

Dim pt As PivotTable

Dim Temp As Variant

Dim y As Integer

Dim i As Integer

Set pt = Sheets("sheet1").PivotTables("Pivot1")

y = Worksheets("sheet1").range("A1").End(xlToRight).Column

For i = 0 To y

'On Error Resume Next

Temp = pt.GetPivotData("Total survivors", Sheets("New data").Cells(1, i).Value, 'je ne sais pas quoi mettre ici)

next

end sub

J'essaie désespérément d'utiliser getpivotdata mais sans succès. Est-ce que quelqu'un saurait comment je dois m'y prendre ?

10book2.xlsx (12.92 Ko)

Bonjour,

Merci de joindre un fichier à ta demande.

Et de modifier la version d'Excel que tu utilises dans ton profil.

Excel 2016 est la dernière version. Tu en profiteras pour indiquer si tu travailles sous Windows ou Mac...

Cdlt.

GetPivotData est vraiment pas évident parce que c'est très contraignant. Il garde en général les critères comme si c’était $A$1 et tu ne peux pas copier comme tu le ferais avec A1

Je préfère utiliser directement la référence de la cellule au lieu de Getpivotdata.

si ça fonctionne pour toi, tu n'auras qu'a établir des connexions avec des SI() et une RECHERCHEV()

Bonjour,

Merci de joindre un fichier à ta demande.

Et de modifier la version d'Excel que tu utilises dans ton profil.

Excel 2016 est la dernière version. Tu en profiteras pour indiquer si tu travailles sous Windows ou Mac...

Cdlt.

J'ai édité mon message. Pardon mais je n'arrive pas à modifier la version dans mon profil. J'utilise excel 2010. Merci pour ton aide.

GetPivotData est vraiment pas évident parce que c'est très contraignant. Il garde en général les critères comme si c’était $A$1 et tu ne peux pas copier comme tu le ferais avec A1

Je préfère utiliser directement la référence de la cellule au lieu de Getpivotdata.

si ça fonctionne pour toi, tu n'auras qu'a établir des connexions avec des SI() et une RECHERCHEV()

Ok mais je vois encore moins avec un recherchev()...

j'avais pas vu le fichier. c'est peut-être + simple d'utiliser la fonction en Excel directement

regarde cette solution avec =LIREDONNEESTABCROISDYNAMIQUE()

je vois que tu as Excel 201; je ne sais pas si ça fonctionne pour toi - j'ai 2016

Yves

12book-arnaud.xlsx (15.44 Ko)

Merci.Oui ça fonctionne mais le soucis c'est que je veux l'automatiser parce que le tableau vient du checkboxes où la personne sélectionne les caractéristiques qui l'intéresse (comme poids, taille, etc.) et donc le tableau n'est pas toujours de la même taille. Et donc il n'y a pas toujours les mêmes caractéristiques.

Bonjour

Syntaxe exemple

x = ActiveSheet.PivotTables(1).GetPivotData("Count of Sexe", "Poids", "65<&<90", "Taille", ">190")

Merci, j'avais réussi ça mais maintenant je cherche un moyen pour ne pas écrire "poids" en dur mais plutôt une boucle que vba lirait pour venir chercher chaque en tête dans le tableau à partir de la colonne 2 .

Re

Il manque des explications : peux-tu décrire le process car on ne sait pas si le TCD se reconstruit ou pas et que ce peut choisir l'utilisateur concrètement...

Oui pardon. Alors, l'utilisateur choisit des critères (exemple le nom des colonnes que l'on a dans le tableau) à partir d'une checkbox. Après on lance le pivot table pour calculer la proba en fonction des critères sélectionnés. Puis maintenant, j'aimerais mettre une nouvelle colonne avec la proba que cela soit une femme pour chaque ligne compte tenus des caractéristiques(colonnes).

En l'occurence ci-joint la maj de mon exemple, le TCD devrait avoir comme field chaque colonne du tableau. J'ai laissé que taille et poids pour que ça soit plus lisible mais dans l'idée il pourrait en avoir d'autres.

16book-2.xlsx (15.31 Ko)

Re

Toujours pas claire pour moi la démarche

Pour le calcul de probabilité : on devrait avoir une population de référence sur laquelle serait construit le TCD et selon les critère demandés poids de tant et le niveau d'étude on irait chercher le ou les ratios...

Effectivement le calcul n'est pas juste pour la proba dans le fichier d'avant. Il faut faire un count des femmes avec ses caractéristiques sur count de toutes les personnes avec ses caractéristiques.

Exemple : count du nombre de femme faisant moins de 165cm et 65kg sur nombre de personnes faisant moins de 165cm et 65kg. Là ça ferait 100%. La proba, j'ai réussi à la calculer c'est plus pour extraire cette proba et qu'il l'affilie automatiquement à chaque ligne. Donc dans notre exemple, ça serait 100% en G2 et G4.

Pour la démarche, je vais essayer de l'expliquer autrement.

J'ai beaucoup de données dans un onglet avec pour chaque ligne des noms, poids, taille, sexe, adresse, etc.

L'utilisateur va sélectionner à partir d'une checkbox les caractéristiques qui l'intéressent et là ça va former le tableau que l'on a sheet1. Avec pour chaque colonne une caractéristique et chaque ligne représente une personne.

Après on va lancer le TCD qui va calculer la probabilité d'être une femme pour chaque sous segment (c'est à dire par exemple la probabilité d'être une femme si la personne mesure plus de 190cm et fait plus de 90kg ou bien plus de 190cm et entre 65 et 90kg, etc.).

Et maintenant, j'aimerais rajouter une colonne au tableau avec les probabilités calculées grâce au TCD. Cette probabilité indiquerait quelle chance que cette personne soit une femme compte tenu des caractéristiques qui sont dans les autres colonnes.

Je sais que ça parait bizarre puisque la première colonne m'indique déjà si c'est un homme ou une femme.

Je crois avoir ciblé mon problème. Si je le simplifie il faudrait que je fasse une boucle du style :

For i =1 to n 'avec n le nombre de colonnes

r=(i)

next

et je voudrais obtenir :

r= (1,2,3,...,n)

Je pense qu'il faut que je fasse quelque chose avant le next mais je ne trouve pas quoi..

Rechercher des sujets similaires à "getpivotdata lie tableau"