Créer un tableau dynamique en fonction d'un report BI

Bonjour,

Je rencontre une problèmatique concernant le mixte de deux tableaux.

J'ai une première partie (A:O) qui est issue d'un report BI. La part deux P:Z me permet de connaitre mes besoins.

La problématique :

Le BI se met à jour chaque matin, de nouvelleS ligneS peuvent donc venir s'y insérer, mais ma partie "à la main" ne suit pas ce changement.

par exemple, une ligne s'insère le matin en ligne 40 - mes formules en P:Z ne "suivent pas" ce changement.

De plus, j'utilise un code couleur, en colonne V, qui lui non plus ne suit pas l'évolution. -> si les couleurs ne suivent pas, ce n'est pas la priorité.

N'étant pas du tout expert en la matière, je viens chercher votre aide, avec deux possibilités que j'ai en tête.

1 - la plus efficace pour moi. Réussir à lier l'ensemble. les lignes sont comme figées et liées entre elles. Si une nouvelle ligne s'y insère

elle ne vient pas perturber le reste.

sinon

2 - avoir un onglet réservé au BI, dans un second, un duplicata de ce dernier, avec les formules. une marco qui "scanne" les deux tableaux, et si de nouvelles lignes ont été insérées dans le BI, rajouter dans l'onglet "NOUVEAU" ces nouvelles lignes qui n'existent pas dans le tableau de travail.

J'ai essayé de mettre un exemple clair via la PJ avec IDEE1 et IDEE2

Merci

Bonjour,

Si cela peu aider quelqu'un.

J'ai une macro, qui me permet de comparer ma table de données avec celle de travail.

Il y a donc un onglet :

  • TABLE_DE_DONNEES -> Se met à jour chaque matin, de nouvelles données y sont intégrées, non présentes la veille.
  • TABLE_DE_W -> Copie du tableau de données de base.
  • NouvellesDonnees -> Chaque matin, je lance la MACRO (suivante) - elle compare la Table de données et mon tableau de travail. Chaque nouvelles données présentes dans la table données s'affiche dans cet onglet. A partir du moment où une donnée en ligne ou colonne est différente.

Ce n'est pas optimum, mais pour le moment ça fonctionne.

Sub CopierNouvellesDonnees()
     Dim wsTABLE_DE_DONNEES As Worksheet
    Dim wsTABLE_DE_W As Worksheet
    Dim wsNouvellesDonnees As Worksheet
    Dim derniereLigneTABLE_DE_DONNEES As Long
    Dim derniereLigneTABLE_DE_W As Long
    Dim i As Long, j As Long
    Dim trouve As Boolean
    Dim nbNouvellesDonnees As Long

    ' Définir les feuilles de calcul
    Set wsTABLE_DE_DONNEES = ThisWorkbook.Sheets("TABLE_DE_DONNEES")
    Set wsTABLE_DE_W = ThisWorkbook.Sheets("TABLE_DE_W")
    Set wsNouvellesDonnees = ThisWorkbook.Sheets("NouvellesDonnees")

    ' Trouver la dernière ligne avec des données dans chaque feuille de calcul
    derniereLigneTABLE_DE_DONNEES = wsTABLE_DE_DONNEES.Cells(wsTABLE_DE_DONNEES.Rows.Count, "A").End(xlUp).Row
    derniereLigneTABLE_DE_W = wsTABLE_DE_W.Cells(wsTABLE_DE_W.Rows.Count, "A").End(xlUp).Row

    ' Vérifier si des données sont présentes dans l'onglet TABLE_DE_DONNEES
    If derniereLigneTABLE_DE_DONNEES = 1 Then
        MsgBox "Aucune donnée dans l'onglet TABLE_DE_DONNEES.", vbExclamation
        Exit Sub
    End If

    ' Initialiser le compteur de nouvelles données
    nbNouvellesDonnees = 0

    ' Boucler à travers les données de l'onglet TABLE_DE_DONNEES
    For i = 1 To derniereLigneTABLE_DE_DONNEES
        ' Réinitialiser la variable trouve pour chaque nouvelle ligne de l'onglet TABLE_DE_DONNEES
        trouve = False
        ' Vérifier si la ligne actuelle de l'onglet TABLE_DE_DONNEES est identique à une ligne de l'onglet TABLE_DE_W
        For j = 1 To derniereLigneTABLE_DE_W
            Dim match As Boolean
            match = True
            ' Vérifier si les valeurs de chaque cellule dans les colonnes A:T correspondent
            For k = 1 To 20 ' Correspondant aux colonnes A:T
                If wsTABLE_DE_DONNEES.Cells(i, k).Value <> wsTABLE_DE_W.Cells(j, k).Value Then
                    match = False
                    Exit For
                End If
            Next k
            If match Then
                trouve = True
                Exit For
            End If
        Next j
        ' Si la ligne actuelle de l'onglet TABLE_DE_DONNEES n'est pas trouvée dans l'onglet TABLE_DE_W, copier les données dans l'onglet NOUVELLES DONNEES
        If Not trouve Then
            wsTABLE_DE_DONNEES.Rows(i).Copy wsNouvellesDonnees.Rows(wsNouvellesDonnees.Cells(wsNouvellesDonnees.Rows.Count, "A").End(xlUp).Row + 1)
            ' Incrémenter le compteur de nouvelles données
            nbNouvellesDonnees = nbNouvellesDonnees + 1
        End If
    Next i

    ' Afficher un message en fonction du nombre de nouvelles données copiées
    If nbNouvellesDonnees > 0 Then
        MsgBox nbNouvellesDonnees & " nouvelle(s) donnée(s) copiée(s) dans l'onglet NouvellesDonnees.", vbInformation
    Else
        MsgBox "Aucune nouvelle donnée trouvée.", vbInformation
    End If

    Application.DisplayAlerts = True ' Réactiver les alertes
End Sub

Si vous avez des idées d'amélioration, je suis preneur :)

Merci.

Bonjour

Il faut utiliser le self referencing dans PowerQuery

https://exceleratorbi.com.au/self-referencing-tables-power-query

Rechercher des sujets similaires à "creer tableau dynamique fonction report"