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 :

Meilleure procédure pour générer/copier tableau à partir d'une PivotTable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut Meilleure procédure pour générer/copier tableau à partir d'une PivotTable
    Salut Forum,

    Dans mon fichier, j'ai une Sheet Data dans laquelle je stocke tout un tas d'informations. J'ai ensuite un paquet de PivotTables qui maltraite tout cela.

    Jusque là, ça va

    Ensuite j'ai une macro qui me génère un report, dans lequel j'insère des graphiques générés à partir de mes PivotTables, c'est parfait.

    Mais je voudrais également ajouté dans cet email des tableaux.
    Manuellement, ces tableaux, je les génère à partir de mes PivotTables.

    En gros, sur la ligne de la PivotTable qui m’intéresse, je choisis "Show details", cela me crée une nouvelle sheet avec toutes les colonnes de ma PivotTable. je supprime les colonnes qui ne m’intéresse pas à l'affichage tu tableau et j'ai finalement ce que je dois copier dans mon mail.

    Ma question, je souhaite automatiser ces étapes et je me demande qu'elle est la meilleure procédure.
    Qu'en pensez-vous? y'a-t'il des astuces?

    Par avance merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut


    pour l'insertion automatique dans un email d'une plage de cellule, je te recommande d'utiliser la fonction disponible à partir de la
    http://excel.developpez.com/faq/inde...geCellulesMail

    J'utilise SendRangeByMail avec une grande satisfaction

    La fonction est évidemment adaptable à ton cas, en passant par exemple un paramètre supplémentaire en lieu et place de la sélection manuelle
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut
    merci
    Il y a effectivement une procédure qui me convient parfaitement pour la copie vers le mail. Je l'ai testé et c'est parfait.

    Reste plus qu'à générer le tableau automatiquement et c'est là que c plus chaud.
    Est-il possible de donner un nom à un couple colonne/ligne d'une pivottable?
    En somme, je voudrais pouvoir dire dans macro, sur la cellute Toto fait un SHowdetails (ce qui me génère un tableau dans une autre feuille).

    Quand je tente de capturer les actions, il me donne la référence de la cellule elle même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("B9").Select
    Selection.ShowDetail = True
    je pourrais donner un nom à la cellule B9, mais si jamais j'insère une ligne ou une colonne qq part. La cellule B9 n'est plus au niveau du couple ligne/colonne de ma pivottable qui m’intéresse.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Il te reste la possibilité de passer par une boucle de test du contenu des cellules, et de chercher celle qui t'interesse pour lui appliquer le code
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut
    mouais, ça me parait tendu tout ça!

    je pensais qu'il existait un truc du style :
    CellToUse = Pivottable(toto, ligne, colonne)

    mais bon tant pis, je vais rester sur le nom de la cellule et verrouiller la feuille.

    Dernière question, sans vouloir abuser, comment supprimer la feuille sur laquelle on se trouve mais sans utiliser son nom?

    Voici ce que 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
    19
    20
    21
        Sheets("SubK Report").Select
        'PTS case
        Range(PTS).Select
        k = Range(PTS).value + 1
        Selection.ShowDetail = True
        'delete the useless column
        Columns("D:AD").Select
        Selection.Delete Shift:=xlToLeft
     
        'copy the table needed
        strHTML = strHTML & "<TABLE width=100%><TR><TD width=100% colspan=2>    - the result is:</TD></TR></TABLE>"
        strHTML = strHTML & "<TABLE BORDER>"
        For i = 1 To k 'number of line (range like A1:D4)
            strHTML = strHTML & "<TR halign='middle'nowrap>"
            For j = 1 To 4 'number of column
                strHTML = strHTML & "<TD BGCOLOR=CCCCFF align='center'><FONT COLOR=#333333 SIZE=3>" _
                & Cells(i, j) & "</FONT></TD>"
            Next j
            strHTML = strHTML & "</TR>"
        Next i
        strHTML = strHTML & "</TABLE>"
    Aprés la copie du tableau, je voudrais en fait supprimer la feuille qu'il a créé à l'étape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ShowDetail = True
    sachant que je ne contrôle pas le nom de la feuille qu'il donne.
    Une idée?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    solution possible :
    - lister les feuilles avant la création de la nouvelle feuille
    - supprimer la feuille qui n'apparait pas dans la liste initiale
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [9i] Procédure PL/SQL pour générer un tableau contenant des dates
    Par nidhalBMC dans le forum PL/SQL
    Réponses: 2
    Dernier message: 27/05/2014, 12h24
  2. Copier tableau à partir d'une cellule.
    Par HankMoody dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/08/2012, 18h54
  3. Procédure pour générer un code à partir de l'ID dans mysql
    Par the watcher dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/04/2011, 20h13
  4. Comment faire pour générer un fichier à partir d'une BD MySQL
    Par dessinateurttuyen dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2006, 20h39
  5. Meilleure Méthode pour parcourir un tableau
    Par KPitN dans le forum MFC
    Réponses: 7
    Dernier message: 24/02/2005, 16h19

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