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 :

Travail à partir d'un TCD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administration des ventes
    Inscrit en
    Février 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administration des ventes

    Informations forums :
    Inscription : Février 2018
    Messages : 13
    Par défaut Travail à partir d'un TCD
    Bonjour,

    J'ai aujourd'hui une problématique liée à l'export des données d'un TCD dans différents fichiers en fonction de leur région.

    Pour résumer j'ai un fichier source du nom "Fichier source reportings.xlsx". Dedans, j'ai un onglet "Montants financés et ass" qui contient un TCD dépendant d'un autre onglet.
    En gros ce sont des données en fonction de personnes, qui elles mêmes sont dans différentes régions.

    Mon but : Avoir trois fichiers de 3 régions différentes, avec les personnes appartenant à ces régions.

    J'ai donc tenté de créer trois fichiers, puis de les ouvrir. Ensuite, je calcule la dernière ligne de mon TCD pour passer en revue toutes les personnes de mon TCD (je fais -1 car la dernière ligne est le total). Je vais jusqu'à 6 car mon TCD s'arrête là.
    En gros, le nom de la personne est en colonne 1, et la cellule sur laquelle on doit cliquer pour avoir le détail du TCD est en colonne 2. Dans un onglet "Régions", j'ai mis en colonne (A, B et C) les différentes personnes s'y rattachant. Mon idée est donc que le nouvel onglet créé soit nommé par le nom de la personne (d'où le nom_onglet = MFA.Cells(L, 1).Value) et soit déplacé dans le bon fichier suivant si je le trouve en colonne A, B ou C.

    J'ai peu d'espoir que ce soit clair, mais en résumé ça ne fonctionne pas Si en lisant le code, vous voyez quelque chose qui vous choque, dites le moi


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Sub Régions()
     
     
    Application.DisplayAlerts = False
     
     
    Set NewBook = Workbooks.Add
    NewBook.SaveAs "C:\CHEMIN\Chiffres individuels IDF.xlsx" _
            , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    NewBook.SaveAs "C:\CHEMIN\Chiffres individuels Est.xlsx" _
            , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    NewBook.SaveAs "C:\CHEMIN\Chiffres individuels Ouest.xlsx" _
            , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
     
    Workbooks.Open Filename:= "C:\CHEMIN\Chiffres individuels Est.xlsx"
    Workbooks.Open Filename:= "C:\CHEMIN\Chiffres individuels IDF.xlsx"
    Workbooks.Open Filename:= "C:\CHEMIN\Chiffres individuels Ouest.xlsx"
     
     
    Windows("Fichier source reportings.xlsx").Activate
    Set MFA = Workbooks("Fichier source reportings.xlsx").Worksheets("Montants financés et ass")
    D = MFA.Cells(MFA.Rows.Count, "A").End(xlUp).Row
    For L = D - 1 To 7 Step -1
    nom_onglet = MFA.Cells(L, 1).Value
    Cells(L, 2).Select
    Selection.ShowDetail = True
    ActiveSheet.Name = nom_onglet
        If Sheets("Régions").Range("A1:A100").Find(nom_onglet) Then
        Sheets(nom_onglet).Move Before:=Workbooks("Chiffres individuels Est.xlsx"). _
        Sheets(1)
        End If
     
        If Sheets("Régions").Range("B1:B100").Find(nom_onglet) Then
        Sheets(nom_onglet).Move Before:=Workbooks("Chiffres individuels Ouest.xlsx"). _
        Sheets(1)
        End If
     
        If Sheets("Régions").Range("C1:C100").Find(nom_onglet) Then
        Sheets(nom_onglet).Move Before:=Workbooks("Chiffres individuels IDF.xlsx"). _
        Sheets(1)
        End If
    MFA.Activate
    Next L
     
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par EstebanBueno Voir le message
    Bonjour,

    Si votre source de données (à partir de laquelle votre TCD est issu) contient l'information sur la région, il serait sans doute plus simple d'exporter votre onglet source de données dans trois nouveaux fichiers et d'éliminer dans chacun d'eux, 2 des régions (faites l'essai avec l'enregistreur de macro).
    Ensuite, quelle est l'utilité de créer un onglet par nom, si vous pouvez obtenir le même résultat avec un filtre ?

  3. #3
    Membre averti
    Homme Profil pro
    Administration des ventes
    Inscrit en
    Février 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administration des ventes

    Informations forums :
    Inscription : Février 2018
    Messages : 13
    Par défaut
    Bonjour,

    Malheureusement non les régions ne sont pas dans ma base de données initiales, d'où mon onglet en plus "Régions".

    Pour les onglets c'est parce qu'à la base il ne faut pas que les données du fichier ouest par exemple ne soient connues par les destinataires du fichier est.

    Et j'utilise le TCD car j'utilise déjà des filtres notamment sur les dates pour ne pas avoir la totalité des informations de la base de données

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Comment sont organisées les données sources (avant TCD) car même si j'adore faire des TCD j'en vois pas l'utilité dans ce que tu décris.

    je rejoint Eric KERGRESSE (que je salue au passage ) concerant les filtres

    Peux-tu faire des captures écrans pour voir comment elles sont organisées tes souces contennat tes personnes et celles de tes régions

    pas de fichiers por l'instant et cache tes données sensible

    @ Bientôt

  5. #5
    Membre averti
    Homme Profil pro
    Administration des ventes
    Inscrit en
    Février 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administration des ventes

    Informations forums :
    Inscription : Février 2018
    Messages : 13
    Par défaut
    Bonjour,

    En gros, j'utilise le TCD à la base pour alimenter un autre fichier (de suivi) dont je n'ai pas fait mention ici car je n'ai pas de difficulté avec (connaître certaines sommes par personnes).

    J'utilise donc ce TCD qui existe de toute façon pour ensuite exporter les données.

    Je joins 3 screens. On voit les commerciaux des différentes régions, que j'ai créé pour savoir dans quel fichier envoyer. ENsuite, on voit la base de données (il y a 3x plus de colonnes existantes que sur le screen). Enfin, on voit le TCD, où je clique sur la case des montants fi pour avoir le détail. Et dans la première colonne, l'identité du commercial.

    J'ai mis Nom Prenom à chaque fois, mais chaque ligne, le nom et le prénom sont évidemment différents.

    Cordialement
    Nom : Régions.PNG
Affichages : 204
Taille : 18,4 KoNom : TCD.PNG
Affichages : 206
Taille : 28,7 KoNom : Base de données Family.PNG
Affichages : 210
Taille : 18,3 Ko

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    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 564
    Par défaut
    Bonjour

    Si tu dois exporter par région le plus simple est de mettre la région en zone de filtre puis par VBA
    • utiliser l'option du TCD qui permet de créer autant d'onglets que de régions
    • puis générer le sous ensemble de données sources correspondant à la région
    • rattacher le TCD à cet extrait
    • exporter les deux onglets dans un ficher


    J'ai proposé le code suivant pour une demande similaire : il faut adapter les noms de champ, d'onglet initial et de TCD mais sinon la logique correspond
    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
    22
    Sub Pays()
    Dim ws As Worksheet, Total As Range, Pays As String, TCDSource As String
     
        With Worksheets("TCD").PivotTables(1)
            .PivotFields("Country").ClearAllFilters
            .PivotFields("Country").CurrentPage = "(All)"
            .ShowPages PageField:="Country"
        End With
        For Each ws In ActiveWorkbook.Worksheets
            If ws.Name <> "TCD" And ws.PivotTables.Count > 0 Then
                Set Total = ws.Cells(ws.PivotTables(1).TableRange2.Rows.Count, ws.PivotTables(1).TableRange2.Columns.Count)
                Pays = ws.Cells(1, 2).Value
                Total.ShowDetail = True
                ActiveSheet.Name = Pays & "_Data"
                TCDSource = Replace(Pays, " ", "_")
                ActiveSheet.ListObjects(1).Name = TCDSource
                ws.PivotTables(1).ChangePivotCache _
                    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
                    TCDSource)
            End If
        Next ws
    End Sub

Discussions similaires

  1. [SQL 2005] Appel travail à partir d'un travail
    Par jibjib dans le forum Administration
    Réponses: 2
    Dernier message: 23/06/2010, 11h42
  2. Histogramme empilé et cumulé à partir d'un TCD
    Par alex830001 dans le forum Excel
    Réponses: 2
    Dernier message: 09/01/2009, 11h04
  3. Réponses: 3
    Dernier message: 19/10/2007, 17h57
  4. Réponses: 35
    Dernier message: 24/04/2007, 17h11
  5. [Droit du travail]Partir un jour
    Par ronan99999 dans le forum Droit du travail
    Réponses: 16
    Dernier message: 04/04/2005, 08h50

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