Macro inserer ligne, supprimer ligne en fonction taille tcd

sim

XLDnaute Occasionnel
Bonjour a toutes et a tous!!!


Ce week end, j'ai essayer de decouvrir comment mettre en page une feuille en constante evolution. Et je crois avoir trouver la logique mais je n'arrive pas a la mettre en place....

Sur une feuille, j'ai 4 TCD disposer en dessous les un de autres. Ces TCD evoluent en fonction d'un seul critere: le marche

Evidemment, pour chaques marche le nombre d'information est different et du coup le nombre de ligne aussi.

Jusqu'a present j'ai laisser asses d'espace entre chaque tcd pour etre sur que un tcd n'empiete pas sur celui qui est en dessous.

Ce que j'aimerai c'est qu'il y est le meme espace entre chaque TCD peut importe le marche et le nombre de ligne des TCD.

Je pensais donc faire une macro qui ferai les choses suivantes:

Definir une variable pour mes TCD.
Definir par un nom la cellule ou est inscrit le titre du TCD (ex dans mon ex: affiliate selling to the market distributor)
Grace a cela la macro pourrait reconnaitre la position ( la ligne) de mes titres.
J'arrive a obtenir cette position par la formule ligne() ou en anglais pour moi, row()

Donc on resume a ce moment la j'ai
Definit mon TCD
Je sais ou il commence

Maintenant il faut calculer la taille du TCD....j'ai reussi a denicher ce petit bout de code me permettant de calculer la taille de mon tcd en entier avec la fonction TableRange2.Rows.Count

Voici le code:

Code:
Sub compterNombreLignesTCD()
    Dim Pvt As PivotTable

    'Définit le TCD    
    Set Pvt = Worksheets("Feuil1").PivotTables("Tableau croisé dynamique1")

    'TableRange2 :
    'plage contenant l'intégralité du rapport de tableau croisé dynamique,
    'y compris les champs de page.
    MsgBox Pvt.TableRange2.Rows.Count
End Sub


Donc on sait ou il commence combien il mesure.....

A chaque changement de marche les tcd sont mis a jour (normal pour avoir la bonne information!!!)

Donc je pensais inserer un nombre de ligne important avant le changement
et ensuite supprimer les ligne en trop.

Ajouter des ligne pour ensuite les supprimer donne asses de place au tcd pour ne pas "ecraser" celui du dessous....


Alors voila la logique a laquelle je suis parvenu...mais je bloque tres sincerement pour la mettre en route.

Dans mon exemple, vous pouvez changer le marche en apuyant sur le bouton "Market" en haut a gauche de la feuille "Current_market".

Ensuite, je vous laisse le soin de parcourir les codes VBA, si jamais vous avez besoin de voir comment tout ca marche.....

Merci d'avance a ceux qui pourront m'aider...parce que la je me sens un peu seul face au souci. :rolleyes::confused:

Au plaisir de vous lire...:D

Sim
 

Pièces jointes

  • macro mise en page.zip
    228.9 KB · Affichages: 138

sim

XLDnaute Occasionnel
Re : Macro inserer ligne, supprimer ligne en fonction taille tcd

Re,

alors j'ai lu un peu sur les variable et c'est pas encore tres tres clair pour moi....

tu les definirai comment dans ce cas la?

Du style

Code:
Dim lig1, lig2, lig3 as variable

merci
 

chris

XLDnaute Barbatruc
Re : Macro inserer ligne, supprimer ligne en fonction taille tcd

Re

En fait j'ai revérifié, tu as intérêt à te baser sur la colonne D et non B.

Pour les variables
Dim lig1, lig1a, lig1b, lig2, lig3 as integer

devrait suffire. Si tu compte dépasser la ligne 32000 déclare "As long"
 

Statistiques des forums

Discussions
315 084
Messages
2 116 060
Membres
112 645
dernier inscrit
Acid Burn