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 :

Problème d'extraction de donnéesTCD vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut Problème d'extraction de donnéesTCD vba
    Bonjour,

    Je souhaiterais faire la somme sur le champ "total général" du mois en moins de 5 jours et en moins de 10 jours et aussi sur le champ du dernier mois précédent (le mois de JUIN ici) dans le but d'automatiser ces tâches.

    Nom : Sans titre.jpg
Affichages : 357
Taille : 390,0 Ko

    J'ai du mal à extraire des données du tableau dynamique croisé avec VBA afin de faire les sommes et tout. Pourriez vous m'indiquer des liens ou des tutoriels ou des exemples qui m'aideront ?

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    J'ai du mal à extraire des données du tableau dynamique croisé avec VBA afin de faire les sommes et tout. Pourriez vous m'indiquer des liens ou des tutoriels ou des exemples qui m'aideront ?
    Les sommes de quoi ? et tout quoi ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Rebonjour, j'ai expliqué mon problème dans ma première ligne

    Les sommes sur le champ "total général" et le champ du dernier mois précédent (le mois de JUIN ici :"6") "en moins de 5 jours" et "en moins de 10 jours"
    COrdialement

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    C'est vrai, mais je comprends pas ce que tu dis.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Je veux :

    1-vérifier si je pointe bien sur la colonne "Total général" ensuite faire la somme de l'étiquette de ligne 1 jusqu'à la ligne 4 qui correspond à la somme "en moins de 5 jours ouvrés" et de l'étiquette de ligne 1 jusqu'à la ligne 9 qui correspond à la somme "en moins de 10 jours ouvrés".

    2-vérifier si je pointe bien sur le dernier mois précédent (représente le mois "6" dans l'image) et ensuite faire exactement les mêmes sommes que celles citées dans le 1.

    Pour ça je voudrais extraire les données du TCD, lorsque j'essaye de les récupérer en utilisant un Find, j'ai des erreurs.

    Merci pour votre aide.

    Cordialement

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    BOnjour

    Et avec des titres du type Étiquettes de lignes, étiquettes de colonnes, 1, 2 etc, on est sensé comprendre où sont les jours ouvrés ?
    On ne sait dans quel sens se lisent les durées.

    Un minimum d'effort pour que la copie d'écran soit lisible, serait bienvenue.

    Il existe la fonction LIREDONNEESTABCROISDYNAMIQUE d'une part et des typages des différentes parties d'un TCD

    En l'état le TCD ne semble pas servir à grand chose si l'objectif est limité à ces synthèses faisables autrement. Ou alors faire des groupes 5 jours dans le TCD...

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci pour votre réponse,

    Je viens de corriger la pièce jointe, le délai représente les jours ouvrés. Je dois juste automatiser cela et rassurez vous ces données ne peuvent être recueillies autrement parce que les fichiers Excel servant à faire ce TCD sont parfois très gros!

    Je connais la fonction LIREDONNEESTABCROISDYNAMIQUE mais je n'arrive pas à jouer sur les conditions ! Je suis bloqué par le fait que la taille du TCD peut évoluer en fonction du mois dans lequel nous sommes. Le but étant de toujours faire les calculs demandés le dernier mois précédent (c'est à dire le mois de Juin "6" dans ce cas) !
    Si Nous sommes en Septembre, deux colonnes seraient donc ajoutées aux TCD (les mois 7 et 8) et les calculs seront faits sur le mois d'Aout !

    Ce qui m'amène donc à vouloir faire une recherche sur la colonne "Total général" car sa position changerait aussi en fonction du mois de la création du TCD et donc choisir une plage ou juste recueillir les données par la fonction LIREDONNEESTABCROISDYNAMIQUE pour effectuer les sommes pourrait fausser le résultat durant les mois à venir!

    Me Comprenez vous ?

    Merci pour votre aide

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Re

    LIREDONNEESTABCROISDYNAMIQUE a justement l'avantage de se moquer de la surface du TCD puisque le repère est l'angle en haut à gauche du TCD et qu'il est très facile de dynamiser les critères de lecture pour passer du mois 6 au mois 7 par exemple.

    Pour 4 jours, ajouter 4 LIREDONNEESTABCROISDYNAMIQUE reste très simple. Pour 9 c'est un peu plus casse pied.

    Si cela doit être fait en VBA, il serait plus simple de filtrer sur 4 puis 9 jours et sur le mois concerné afin de récupérer le total général par LIREDONNEESTABCROISDYNAMIQUE, le reporter dans la cellule de synthèses puis défiltrer.

    Enfin il reste la possibilité de recherche sur les diverses zones du TCD et notamment TableRange1 qui correspond à la surface du TCD hors champs de page (filtre) et donc TableRange1.Columns.Count donne la dernière colonne du TCD...

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Bonjour,

    Merci pour vos réponses, j'ai triché un peu en faisant comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Nbc = ActiveSheet.Range("A3").PivotTable.TableRange1.Columns.Count
    Mt = Month(Date) - 1
     
    If Mt = Cells(4, (Nbc - 2)).Value Then
        Cells(4, Nbc - 2).Select
        'Calcul le total en moins de 5 jours ouvrés
        Cells(7, 21) = WorksheetFunction.Sum(Range(Cells(5, Nbc - 2), Cells(8, Nbc - 2)))
        'Calcul le total en moins de 10 jours ouvrés
        Cells(12, 21) = WorksheetFunction.Sum(Range(Cells(5, Nbc - 2), Cells(13, Nbc - 2)))
    Else
        MsgBox ("Nous ne sommes pas au mois précédent")
    End If
    Maintenant j'ai un autre problème, j'aimerais mettre le bouton qui crée le TCD dans la feuille active, je me dis qu'il faut juste que je change le nom de la table de destination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Base TCD!R1C5:R1048576C7", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="TCD!R3C1", TableName:="TCD Tarification", _
            DefaultVersion:=xlPivotTableVersion12
    j'ai essayé de créer une feuille pour être la feuille active mais quand je remplace dans la table de destination ça ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Dim ShSources As WorkSheet
     
    Set ShSources=ThisWorkBook.ActiveSheet
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Base TCD!R1C5:R1048576C7", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="ShSources!R3C1", TableName:="TCD Tarification", _
            DefaultVersion:=xlPivotTableVersion12
    Aussi, j'aimerais savoir pourquoi est ce important de rafraichir un TCD et comment le faire avec l'aide VBA ?

    Merci d'avance pour vos réponses

  10. #10
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    N'ayant eu aucune réponse, je repose ma question :

    J'aimerais mettre le bouton qui crée le TCD dans la feuille active, je me dis qu'il faut juste que je change le nom de la table de destination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Base TCD!R1C5:R1048576C7", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="TCD!R3C1", TableName:="TCD Tarification", _
            DefaultVersion:=xlPivotTableVersion12
    j'ai essayé de créer une feuille pour être la feuille active mais quand je remplace dans la table de destination ça ne fonctionne pas (je m'y prends mal) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Dim ShSources As WorkSheet
     
    Set ShSources=ThisWorkBook.ActiveSheet
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Base TCD!R1C5:R1048576C7", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="ShSources!R3C1", TableName:="TCD Tarification", _
            DefaultVersion:=xlPivotTableVersion12
    Aussi, j'aimerais savoir pourquoi est ce important de rafraichir un TCD et comment le faire avec l'aide VBA ?

    Merci d'avance pour vos réponses

  11. #11
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    ShSources est une variable et non le nom de la feuille donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableDestination:="ShSources!R3C1"
    ne peut marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableDestination:=ShSources.Range("R3C1")
    devrait marcher.

    L'actualisation ne sert que si la source change : modification, ajout ou suppression de données...

  12. #12
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci

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

Discussions similaires

  1. tutoriel excel VBA
    Par maaaher dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2011, 11h53
  2. [XL-2003] Afficher seulement certaines lignes de TCD - VBA
    Par giuliao dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2011, 20h20
  3. TCD VBA tableau croisé dynamique
    Par pierrotpoulpo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/05/2007, 14h24

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