Microsoft 365 Récupérer des données d'un tableau dans un autre avec structure différente

Dam71

XLDnaute Nouveau
Bonjour à tous,

j'aimerai avoir de l'aide concernant mon problème que je vais vous décrire.
Je possède un tableau situé dans le classeur "Input data", celui-ci est alimenté automatiquement à l'aide d'une source de données externes. je ne peux donc pas modifier sa structure.
Mon besoin est de créer un tableau avec une structure différente dans le classeur "Output data" qui sera alimenté avec les données du 1er classeur (voir exemple dans la PJ). Ce classeur a pour but d'alimenter en données PowerBI. j'aimerai que chaque ligne soit créé automatiquement

Voici les informations concernant chaque colonne du tableau dans "Input data" :
  1. Code : Code projet. Il peut avoir plusieurs lignes avec le même code en fonction du nombre de ressources qui travaillent sur le projet
  2. Client : cette colonne n'est pas reprise.
  3. Nom projet : Il s'agit du nom du projet. Il peut avoir plusieurs lignes portant le même no mde projet. Ceci en fonction du nombre de ressources
  4. Ressources : Il s'agit des personnes qui travaillent sur le projet
  5. Colonne E à P : Il s'agit des imputations réalisées et prévisionnelles pour chaque ressources et par projet.
Voici les informations concernant chaque colonne du tableau dans "Output data". Les colonnes sont les mêmes exceptées pour DATE (qui me pose problème)
  1. DATE : pour chaque ligne, la valeur doit correspondre au mois affichée sur l'entête de la colonne ou a été récupérée la valeur dans le tableau "Input data"
Un script VBA me conviendrai parfaitement, et l'idée est que les données se synchronisent à l'ouverture et fermeture du fichier.

Merci d'avance pour votre aide, car après plusieurs passées à chercher une solution, je n'ai rien trouvé. :/

Damien
 

Pièces jointes

  • Pointage ressources projet.xlsx
    17.4 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonsoir Dam71, JHA, merinos,

Pour ceux qui préfèrent VBA le code de ThisWorkbook :
VB:
Private Sub Workbook_Open()
Dim P As Range, nlig&, ncol%, n%
Set P = Sheets("INPUT DATA").[A3].CurrentRegion
nlig = P.Rows.Count - 1
If nlig Then Set P = P.Offset(1).Resize(nlig)
ncol = P.Find("*", , xlValues, , xlByColumns, xlPrevious).Column - 4
If ncol < 1 Then ncol = 0
Application.ScreenUpdating = False
With Sheets("OUTPUT DATA")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A3] '1ère cellule de destination
        For n = 0 To ncol - 1
            P.Columns(1).Copy .Cells(1).Offset(n * nlig)
            P.Columns(4).Copy .Cells(1, 2).Offset(n * nlig)
            P(0, n + 5).Copy .Cells(1, 3).Offset(n * nlig).Resize(nlig)
            P.Columns(n + 5).Copy .Cells(1, 4).Offset(n * nlig)
            With .Cells(1).Offset(n * nlig).Resize(nlig, 4)
                .Borders.LineStyle = xlNone
                .BorderAround Weight:=xlThin 'pourtour
            End With
        Next
        .Offset(nlig * ncol).Resize(Rows.Count - nlig * ncol - .Row + 1, 4).Delete xlUp 'RAZ en dessous
    End With
    .Columns.AutoFit 'ajustement largeurs
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
A+
 

Pièces jointes

  • Pointage ressources projet(1).xlsm
    25.3 KB · Affichages: 7
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
308 222
Messages
2 052 608
Membres
233 411
dernier inscrit
YAYA2334