IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tableau croisé dynamique et espaces - comment faire?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 35
    Points
    35
    Par défaut Tableau croisé dynamique et espaces - comment faire?
    J'ai formaté une feuille sur laquelle je compile les heures de nos techniciens. Ultimement je voudrais que sur une autre feuille un tableau croisé dynamique résume le contenu de cette section.

    Dans mon formatage il y a une colonne vide entre chaque champs et elle est pratique non seulement pour le formatage mais aussi pour y inséré toute sorte de repères.

    Je me demande donc s'il est possible de générer un tcd avec cette contrainte via vba. S'il est possible de choisir spécifiquement les colonnes et les rangés à employer pour le tcd, via vba, se serais bien pratique.

    merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 35
    Points
    35
    Par défaut
    À défault de trouver une solution purement vba j'ai trouvé une méthode me permettant de m'en sortir... mais pas tout à fait.

    J'ajoute à droite de la dernière cellule employé sur la ligne une série de cellule qui possède la formule:
    donc aa1 copie a1, aa2 copie a3, aa3 copie a5, j'élimine ainsi les colonnes vide pour ce qui est du tcd tout en les conservant sur ma feuille.

    Lorsque je bascule sur ma feuille "résumé" un worsheet_activate crée le tcd mais il y a un hic:

    La liste de nom aura une taille différente à chaque fois. Afin de déterminer la plage à partir de laquelle faire le tcd je dois donc identifier ma cellule de départ (en haut, à gauche) et ma cellule de fin (en bas à droite). Ces deux cellule, à chaque rapport, à chaque édition du rapport, pourraient changer de ligne.

    pour délimiter ma zone j'ai créé une ligne au dessus de la première ligne de mon champ qui, en a1, possède le texte instlimitU, en blanc sur fond blanc et j'ai réduit la ligne à 2pixels, le bas est identifié sou instlimitD.

    donc si je fais:
    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
     
    sht2.Range("a1").Select
    Do
    ActiveCell.Offset(1, 0).Select
    Set limitU = ActiveCell
    Loop Until ActiveCell.FormulaR1C1 = "instlimitU"
    startline = limitU.Row
    set tcdstart = range("aa" & startline)
     
    sht2.Range("a1").Select
    Do
    ActiveCell.Offset(1, 0).Select
    Set limitD = ActiveCell
    Loop Until ActiveCell.FormulaR1C1 = "instlimitD"
    endline = limitD.row
    set tcdend = range("ai" & endline)
     
    set plage = sht2.range(tcdstart & ":" & tcdend)
    Ça ne marche pas, j'imagine car il ne peux sélectionner une cellule sur une feuille autre que la feuille active, peut-être, car cette méthode pour trouver une cellule marche bien losque je la fais sur une feuille active. Bref, si je savais comment y référencer ça serait plus facile.

    J'ai essayé d'assigner des variable à mon workbook et a toute les fois que j'active une feuille celle-ci fais les scripts nécessaire pour obtenir le tcdstart et tcdend, me disant que lorsque je basculerais vers la feuille "résumé" les variable tcdstart et tcdend (Public tcdstart as range dans le workbook) auraient nécessairement la valeur donnée, mais non...

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Quelque chose m'échappe dans ton problème...
    SI tu crées un TCD avec comme plage source par exemple A1:BZ1023, tu peux (et dois) choisir les champs à utiliser et leur orientation. Par exemple A,B,C en champ de page, J et Z en champ de données, AK et Aj en champs de lignes et BA en champ de colonne.

    Du coup je ne vois pas le pb...

    PGZ

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut,

    je viens de trouver ceci sur un post tout récent.

    Cela pourrait te donner des pistes.

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2010, 08h33
  2. Réponses: 5
    Dernier message: 14/01/2008, 19h26
  3. Réponses: 6
    Dernier message: 20/02/2007, 10h42
  4. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05
  5. tableau croisé dynamique sous delphi, comment ?
    Par Brice Yao dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo