TCD auto selon parametres select. ds userform

X

XC

Guest
Bonsoir

j`ai presque fini grace a Chti160, Pierrejean et d`autres mais decidemment il y a un tjs une complication alors je solicite encore de l`aide.

Grace aux XLDiens, j`arrive a alimenter des userform selon entete colonne. Maintenant je veux faire des TCD auto selon elements selectionnes en ligne et colonne

Ci-joint j`ai fait un exemple ds mon petit fichier expliquant et detaillant les objectifs

Il s`agit de TCD selon selection ds Userform des elements a mettre en ligne et en colonne

J`arrive a selectionner ce que je veux mais pour ce qui est du TCD, ben je coince. Enregistrer la macro m`a pas vraiment aide car il y a du If... Then ds l`air

Merci pour votre aide en esperant que le theme interessera d`autres personnes que moi

XC [file name=TestMacroTCDV4.zip size=33542]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TestMacroTCDV4.zip[/file]
 

Pièces jointes

  • TestMacroTCDV4.zip
    32.8 KB · Affichages: 33

Dan

XLDnaute Barbatruc
Bonsoir,

Je viens de regarder ta demande.

Une remarque sur ton fichier d'abord car sans prévenir tu utilises des macros qui modifient les barres d'outils.
Cela a déjà causé des dégats chez les utilisateurs d'imposer cela avec les désagréables conséquences qui en suivent sur Excel.
N'oublies pas que ton fichier est susceptible d'être ouvert par tout le monde et que même si c'est involontaire tu peux polluer le programme excel de quelqu'un d'autre.

Ce n'est pas la première fois que l'on demande ceci et jusqu'à présent je ne suis pas sur que ce soit possible. Il faut en effet dire à la macro ce qui se place en colonnes, lignes ou données ou page et donc récupérer les infos choisies via ton l'USF. Après positionner tout cela dans la macro pour contruire le TCD. Hum ! cela va être dur dur mais peut être est ce possible....

Le cas est d'autant plus complexe que les résultats ne seront peut être pas ceux que tu penses visualiser à l'issue de ton TCD. Je pense notamment aux dates et comment elle pourrait se présenter.

Ce qui serait faisable aussi c'est de prévoir à l'avance quelles sont les présentations que tu veux et construire le ou les TCD à partir d'un message qui serait afficher au départ de la macro.
Mais est ce que cela peut t'intéresser car cela modifie sérieusement ton projet puisque on ne sélectionne plus dans l'USF ?

Ce qu'il ne faut pas faire c'est positionner le TCD sur la même feuille que la base de données acr si tu n'as plus de place sur ta feuille le TCD ne se fera jamais.

Autre remarque, plutôt que de créer trois feuilles pays pourquoi ne pas mettre ces données sur une feuille en y ajoutant un champ PAYS.

A te lire

;)

Edition : J'ai pas compris pourquoi tu utilises des macros FUNCTION pour créer les MENUS. ...?

Message édité par: Dan, à: 15/02/2006 00:08
 
X

XC

Guest
Salut Dan,

merci mais c'est vrai que je ne pensais pas qu'afficher un bouton ds la barre d'outil pouvait causer un pb. désolé donc!!

Pour mon PB, c'est peut être hard mais c'est vrai que les colonnes (Nbre...) et titres des colonnes varient selon les feuilles donc cette idée d'userform pour selectionner les infos voulues ds le TCD me paraissait interessante.

J'ai une autre idee : (c'est pas les idées qui me manquent!!)
si c'est pas possible de faire ce que je cherche, je vais créer un TCD pour chaque feuille specifique et un userform reprenant le type de macro (et donc de TCD) voulu - 1 macro = 1 type de TCD et je liste les macros ds l'userform car pour chaque feuille j'ai 1 TCD different

Peux tu Dan creer par macro le TCD joint en exemple car j'ai bien des exemple mais je me retrouve avec un code enorme et c'est pas ce que je cherche

Je cherche une macro qui resume cela en quelques lignes comme suit :

Sub CreatePivotTable()
Dim PTCache As PivotCache
Dim PT As PivotTable

Set PTCache = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, _
SourceData:=Range('A1').CurrentRegion.Address)

Set PT = PTCache.CreatePivotTable _
(TableDestination:='', _
TableName:='PivotTable1')

With PT
.PivotFields('Turnover').Orientation = xlColumnField
.PivotFields('Sales').Orientation = xlDataField
End With
End Sub
J'arrive pas à lui faire dire somme du Turnover par sales par exemple

Dan peux tu m'aider sur le petit exemple de mon fichier. L'enregistreur me donne un truc super long alors que je sais qu'en quelques lignes ça peut le faire.

Merci pour ton aide ou tes propositions

XC
 

Dan

XLDnaute Barbatruc
Bonsoir,

OK. Cela est possible et plus simple à gérer.

Dis moi seulement si le TCD que tu as placé utilisera la même présentation (champ lignes, colonnes) pour les trois feuilles.

N'oublie pas non plus ce que je t'ai dit avant, à savoir que si tu mets tes données dans la même feuille en ajoutant une colonne pour le pays, tu n'auras besoin que d'une seule macro et donc plus besoin d'USF. Le champ pays serait sélectionner dans le champ de page du TCD.

Dans l'attente de tes infos.

;)
 
X

XC

Guest
Super Dan et merci de ta proposition d`aide

Donc le titre ne sera pas le mem ds chaque fichier ni le numero de colonne
ds 1 onglet (ds mon fichier final), le CA s`appelle Turnover, ds un autre Chiffre d`affaires et cela peut etre en colonne 2/4/7
car j`ai plus de 10 onglets (pour le moment)
c`est pour ca que le concept d`userform aurait ete ideal.

Mais si tu me fais un exemple (ds active worbook. range('A1:E50') - c`est un exemple, et que tu arrives a me faire un TCD au format edite ds l`exemple alors ce sera super. J`aurai plus qu`a adapter un TCD par onglet car les onglets ne changent pas chacun de format tous les mois.

Ainsi je listerai les macros (1 macro pour un onglet) ds une listbox (bouton ds barre des taches) et hop le TCD se fera pour la macro selectionnee

ca te parait bien ca??

Merci pour ton aide

XC
 

Dan

XLDnaute Barbatruc
Re,

Bon j'ai encore besoin d'un renseignement avant de te placer la macro.

Je vois que la langue utilisée pour le nom des colonnes est dfifférente d'une feuille à l'autre.
Dis moi quelle sont les langues utilisées car le TCD doit varier en fonction.

;)
 
X

XC

Guest
Dan

t`es tjs la toi. Merci!

Tu vois que des mon exemple en France il y a CA mensuel et Turnover au Pays Bas (tout ca represente le CA)

Si tu me faits un exemple sur les pays Bas je me charge d`affecter les bons termes ds chaque macro pour que ca marche sur chqaue onglet.

Mais les langues sont l`anglais et le francais.

Mais vraiment si tu me faits un exemple sur les pays bas, je prends ton exemple et je l`adapte sur les autres feuilles. Il y aura autant de macro que de feuilles au final

Merci :)

XC
 

Dan

XLDnaute Barbatruc
Re,

Oui bein entendu j'avais comrpis le 'turnrover'.

On peut peut être faire tout en un.

domme moi les rubriques françaises car je ne vois pas ces rubriques dans la feuille France et Belge :

- Contact Sales
- Phone number
- Sales in volume
- Turnover

Veille à la syntaxe

;)
 
X

XC

Guest
Dan

alorw pour france :

Libelle Product et Code Product en ligne, Q vendues et Ca mensuel en colonne

Pour Pays Bas :

Contact Sales, Product Name en ligne et Turnover, Sales in Volume en colonne

Belgique

Libelle Product, Code Product en ligne, Volume et Ca Cumule en colonne

Si tu arrives à faire cela alors merci ce sera super!

A+ et encore merci pour ton aide.

XC
 

Dan

XLDnaute Barbatruc
Re,

Voici la macro qui va te permettre de faire ce que tu demandes sans USF.
Il te suffit de placer cela dans un module et d'attribuer un bouton ou un raccourci clavier.
Explication :
La macro est exécutée à partir de la feuille sélectionnée. Ici cela sera France, Belgique ou Pays bas.
La macro te placera le TCD demandé sur une nouvelle feuille.

Code:
Sub CreationTCD()
' Macro par DAN pour XC le 15/02/06
'http://www.excel-downloads.com/forums/2-130144-tcd-auto-selon-parametres-select-ds-userform.htm

Dim nom As String
Dim plage As Range
Application.ScreenUpdating = False
nom = ActiveSheet.Name
Set plage = ThisWorkbook.ActiveSheet.Range('A1').CurrentRegion
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=plage, TableDestination:='', _
    TableName:='TCD-' & nom
With ActiveSheet.PivotTables('TCD-' & nom)
    .SmallGrid = False
    On Error Resume Next
    .PivotFields('Contact Sales').Subtotals = Array(False, False, False, _
    False, False, False, False, False, False, False, False, False)
    .AddFields RowFields:=Array('Contact Sales', 'Phone Number'), ColumnFields:=('Données')
    .PivotFields('Sales in Volume').Orientation = xlDataField
    .PivotFields('Turnover').Orientation = xlDataField
'Francais
    .PivotFields('Libelle Produit').Subtotals = Array(False, False, False, _
    False, False, False, False, False, False, False, False, False)
'France
    .AddFields RowFields:=Array('Libelle Produit', 'Code Product'), ColumnFields:=('Données')
    .PivotFields('Q vendues').Orientation = xlDataField
    .PivotFields('CA mensuel').Orientation = xlDataField
'Belgique
    .PivotFields('Volume').Orientation = xlDataField
    .PivotFields('CA Cumulé').Orientation = xlDataField
On Error GoTo 0
End With
With Application
        .ScreenUpdating = True
        .CommandBars('PivotTable').Visible = False
End With
Rows('1:1').Insert Shift:=xlDown
Range('A1').FormulaR1C1 = 'Source ' & nom
End Sub
Bonne lecture.

Si pb n'hésite pas.

;)

Message édité par: Dan, à: 16/02/2006 13:05
 
X

XC

Guest
Salut Dan et merci

j'ai juste un petit pb :

&nbs p;.ScreenUpdating = True
cette ligne bugue. C'est cesné faire quoi??

Enfin je sais pas si cela vient aussi de cela (mais je crois pas) mais le nom de la feuille n'apparait pas (J'ai pas TCD Pays Bas) par exemple


Merci bcp si tu peux m'aider sur cela aussi

XC
 

Dan

XLDnaute Barbatruc
Re,

Ce que tu m'indiques est une erreur qui se produit lorsque l'on place une macro ici. Donc pour toi :

Supprime : &nbs p;
Conserve : .ScreenUpdating = True

;)

Edition : Le nom Pays Bas ?, veille à ce que ta feuille s'appelle bien Pays Bas. J'ai essayé sur ton fichier posté ici et cela fonctionne.

Message édité par: Dan, à: 16/02/2006 19:11
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 277
Membres
104 083
dernier inscrit
hecko