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 :

VBA Xl 2k7 - Plage de données d'un TCD


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut VBA Xl 2k7 - Plage de données d'un TCD
    Bonjour à tous,

    Quelqu'un connaîtrait-il la ligne de code VBA qui permet de corriger la plage de données source d'un tableau croisé dynamique ?

    C'est pour une macro qui corrige une table, ajoute et enlève des colonnes, à la fin il faudrait re- paramétrer la source de données du tableau croisé qui va chercher dans cette table.

    Merci beaucoup par avance à toutes les réponses

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut sdispro
    Salut OoooO,

    Si j'ai bien compris tu souhaite simplement supprimer des lignes et des colonnes (qui restent toujours les mêmes) et ensuite reactualiser les données liées à ton TCD?

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Salut.

    Travaille avec un outil Tableau... Tu n'auras pas besoin de VBA.

    1. sélectionner la plage source de base ;
    2. convertir en tableau (Insertion > Tableaux > Tableau) ;
    3. nomme ton tableau (par défaut, Excel nomme tableau1, tableau2, ...) via le ruban Outils de tableau > Création > Propriétés > Nom du tableau ;
    4. Crée ton TCD sur base de ce tableau (clique n'importe où dans le tableau puis Insertion > Tableaux > TblCroiséDynamique) ;
    5. le TCD est créé sur base du tableau.


    Le TCD s'adaptera à tout ajout ou suppression de lignes ou de colonnes au tableau lors de l'actualisation du tableau (clic droit dans le tableau > Actualiser). Pour ajouter une ligne/colonne au tableau, il suffit de la coller à la suite (en bas ou à droite) de la dernière ligne/colonne.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Oui c'est cela, nous utilisons des extractions SAP qui n'ont pas toutes l'info dont nous avons besoin.

    Ensuite nous créons des colonnes avec des RECHERCHEV() qui complètent l'info manquante et nous les figeons par un copier / coller spécial valeurs.

    Ensuite nous rendons les données lisibles à l'aide d'un tableau croisé dynamique.

    Nous utilisons tous les mois les mêmes fichiers, nous ne faisons qu'actualiser les données en faisant une nouvelle extraction de SAP, et ensuite nous utilisons une macro qui refait les colonnes avec les RECHERCHEV, en plus d'autres traitements.

    Le truc c'est qu'à la fin la plage en mémoire dans le tableau croisée est décalée, si un novice l'actualise cela perd des champs, il faut reconstruire le tableau à chaque fois.

    Je pensais qu'il existerait une ligne VBA permettant de corriger la plage de données du tableau croisé, mais peut-être cela n'existe pas ?

    Cdt

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Cela est possible avec VBA.

    Mais si tu procèdes comme je l'ai expliqué, tu n'auras pas besoin de VBA.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Ben comme dit dans un premier message, il s'agit de corriger à la fin d'une macro.

    Pour l'instant nous corrigeons manuellement après l'exécution de la macro.

    Par contre ton astuce que tu m'as donnée est super, je m'en servirai dans d'autres cas.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Ma signature
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Applique mon "astuce" en VBA. Ainsi, si un novice actualise, tu n'auras aucun problème.

    Sinon, tu n'as effectivement pas d'autre choix que de "recalculer" la plage et de modifier la source du TCD, avec les risques de pertes ou de décalage de données que tu cites toi-même.

  8. #8
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Ce que te dis Pierre est d'utiliser comme source un nom de plage et non pas des coordonnées absolues.

    A partir de là, tu peux créer une plage nommée dynamique et non statique cf image jointe (là les colonnes sont fixes), c'est ce que fais Excel de façon automatique depuis 2007 avec les tableaux intelligents.

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2014, 12h28
  2. [XL-2010] VBA pour extraire plage de donnée excel et envoyer par mail
    Par Couettecouette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2013, 21h09
  3. [Toutes versions] [VBA] Macro import plage de données + macro enregistrer le fichier
    Par norgepagan dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2011, 18h22
  4. [AC-2003] Changer la plage de données d'un TCD en VBA
    Par Deustalos dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/02/2010, 17h43
  5. [VBA] excel croisé dynamique et plage de données variables
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/01/2006, 18h14

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