Extraction TCDYN par rapport à nombre de ligne définie

Bonjour,

J'ai un problème que je n'arrive pas à résoudre car j'aimerai automatiser (via VBA probablement) une manipulation.

Je m'explique :

J'ai un tableau avec x lignes et x colonnes (variable à souhait biensur), dans ce tableau je m'intéresse à 3 colonnes (F-G-H) et la totalité des lignes

J'ai un code en colonne H (qui peut tout aussi bien être du texte que des chiffres mais pour simplifier ici, j'ai mis des chiffres) et des chiffres en colonnes F et G. Jusqu'ici c'est un tableau fort simple.

En cellules B1, B2 et B3, je peux rentrer des chiffres manuellement qui correspondent une ligne du tableau que j'ai nommé ici Stop 1, Stop 2 et Stop 3.

  • Stop 1 : Du Début du tableau à la ligne 100
  • Stop 2 : de la ligne 101 à la ligne 350
  • Stop 3 de la ligne 351 à la fin du tableau

Ces lignes étant indiquées dans les cellules B1,B2 et B3

J'ai créé un onglet où j'utilise 3 TCDYN qui correspondent à ce que je souhaite extraire pour chaque "Stop".

J'ai comme résultat pour chaque STOP le nombre de NB1 et de NB2 pour chaque CODE (voir le fichier exemple pour que ce soit plus clair).

Ce qui me donne au final 3 TCDYN avec en dessous une mise en forme que je souhaite avoir au final (j'utilise un CONCATENER tout bête pour ça)

Donc à faire manuellement ça ne me pose pas de problème, le souci c'est que j'ai plusieurs centaines de fichier à traiter et que manuellement j'en ai pour un temps fou.

Je ne vois absolument pas comment faire pour automatiser ça donc je suis preneur de toute aide

Merci d'avance

7exemple.xlsx (38.69 Ko)

Peut être qu'il y a plus simple que par un tcdyn mais je ne vois pas hormis en VBA ??

Bonjour,

Une proposition VBA à étudier.

Cdlt.

4xlp-exemple.xlsm (55.82 Ko)
Private Sub Worksheet_Activate()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim pt As PivotTable
Dim rng_1 As Range, rng_2 As Range, rng_3 As Range
Dim Stop_1 As Long, Stop_2 As Long, Stop_3 As Long, LastRow As Long

    Set wb = ActiveWorkbook
    Set ws = wb.Worksheets("Donn?es")
    Set ws2 = wb.Worksheets("Donn?es TCDs")
    Set ws3 = wb.Worksheets("TCDYN")

    With ws
        LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
        Stop_1 = .Cells(1, 2).Value
        Set rng_1 = .Cells(8, 6).Resize(Stop_1 - 7, 3)
        Stop_2 = .Cells(2, 2).Value
        Set rng_2 = .Cells(Stop_1 + 1, 6).Resize(Stop_2 - Stop_1, 3)
        Stop_3 = .Cells(3, 2).Value
        Set rng_3 = .Cells(Stop_2 + 1, 6).Resize(Stop_3 - Stop_2, 3)
    End With

    With ws2
        .Cells(3, 1).CurrentRegion.Offset(1).Clear
        rng_1.Copy Destination:=.Cells(4, 1)
        .Cells(3, 5).CurrentRegion.Offset(1).Clear
        rng_2.Copy Destination:=.Cells(4, 5)
        .Cells(3, 9).CurrentRegion.Offset(1).Clear
        rng_3.Copy Destination:=.Cells(4, 9)
    End With

    For Each pt In ws3.PivotTables
        Select Case Right(pt.Name, 1)
            Case 1:
                pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, ws2.Cells(3, 1).CurrentRegion)
                pt.RefreshTable
            Case 2:
                pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, ws2.Cells(3, 5).CurrentRegion)
                pt.RefreshTable
            Case 3:
                pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, ws2.Cells(3, 9).CurrentRegion)
                pt.RefreshTable
            Case Else:
        End Select
    Next pt

End Sub

Super première approche, merci beaucoup, ça fonctionne plutôt pas mal du tout, juste mon tableau recap qui ne s'adapte pas en dessous du TCDYN.

Du coup, j'ai rajouté une condition pour vérifier si il y un numéro dans les colonnes A, E et I du TCDYN et j'obtiens ce que je veux.

J'avais de mon coté essayé sans VBA mais je pense qu'il y a mieux à faire (je rejoins un autre fichier sans TCDYN)

Je garde sous le coude le code VBA pour le moment, merci de te pencher sur mon problème

3exemple.xlsx (42.82 Ko)

Je me réponds à moi-même vu que j'essaye quand même d'approfondir sans VBA, ça pourra peut-être servir à quelqu'un d'autre.

Voilà où j'en suis, peut-être qu'il y a un autre moyen plus simple ?? Mais ça fonctionne et j'obtiens ce que je veux...

Rechercher des sujets similaires à "extraction tcdyn rapport nombre ligne definie"