VBA: Remplissage d'un tableau à partir d'un autre tableau

Bonjour,

je suis nouvelle sur ce forum et débutante en VBA. Mon problème est le suivant: je dois créer une macro qui me permette de transvaser les données d'un tableau vers un autre tableau (qui est construit différement)

Je veux donc créer une boucle qui parcourt la colonne "Question" du premier tableau (feuille "Recap") et lorque:

Question (Feuille "Recap") = Question (Feuille "Analysis")

Alors on affiche dans les cases correspondantes, le "Hub" et la "Mark" mais en fonction de la colonne "Reference".

Je vous joins mon fichier pour illustrer mes propos.

Voilà un bout de code mais évidemment sans issue pour le moment ...

Sub recherche_question()

Dim ligne_recap As Integer
Dim Hub As Variant
Dim ref As Variant
Dim markSlope As Integer
Dim question As String
Dim name_ref As Integer

Boucle qui parcour les lignes de feuille Recap

For ligne_recap = 2 To 1000

    question = Sheets("Recap").Cells(ligne_recap, 2).Value
    Hub = Sheets("recap").Cells(ligne_recap, 1).Value
    ref = Sheets("recap").Cells(ligne_recap, 3)
    markSlope = Sheets("recap").Cells(ligne_recap, 4)

        If question = Sheets("Analysis").Cells(3, 2) Then
            For name_ref = 6 To 13
                If ref = Sheets("Analysis").Cells(1, name_ref) Then
                    Hub = Sheets("Analysis").Cells(3, name_ref).Value
                    Sheets("recap").Cells(ligne_recap, 1).Value.Copy
                    Sheets("Analysis").Cells(3, name_ref).Paste

                End If
            Next
        End If

Next

'End Sub

Un grand merci pour votre aide,

Très bonne journée à tous,

Marie

30fichier-test.xlsm (42.34 Ko)

Bonjour,

Comment fais-tu pour distinguer le "HUB" de "SALES" du "HUB" de "PART" ainsi que les autres HUB ?

Ce n'est pas indiqué dans le tableau de recap...

P.

Dans mon tableau recap, chaque HUB est attribué à une ou plusieurs références (SALES, PART ...). Je veux donc que mon HUB s'affiche dans la bonne colonne du tableau analysis et bien sûr en fonction de la question.

En résumé, pour une même question, je peux avoir jusqu'a 10 HUB différents et 4 references différentes.

Je ne sais pas si j'ai bien répondu à la question ....

marielegrelle a écrit :

Dans mon tableau recap, chaque HUB est attribué à une ou plusieurs références (SALES, PART ...). Je veux donc que mon HUB s'affiche dans la bonne colonne du tableau analysis et bien sûr en fonction de la question.

Je ne sais pas si j'ai bien répondu à la question ....

Pas plus clair....

on ne sait pas (pour moi, mais je peux me tromper) dire que tel HUB est attibué à SALES dans le tableau de recap

Tu aurais dû mettre un exemple fait à la main ... AVANT/APRES

P.

Bonjour,

La demande est plus que confuse.

Une piste pour aborder la question, mais qu'elle est la question ?

Cdlt.

21fichier-test.xlsm (56.34 Ko)

Voilà un exemple de ce que je veux avant après. J'espère que ça sera plus clair.

Merci pour votre aide

Jean-Eric, ta proposition est très interessante. Le seul problème est que mes données du tableau RECAP sont variables et dépendent d'un autre programme.

C'est pourquoi je cherche une solution pour que mon tableau ANALYSIS puisse être mis à jour automatiquement.

Bonjour arielegrelle, le forum

C'est un problème classique de ventilation de données que tu peux résoudre via l'objet Dictionary

On emploiera alors un dictionnaire parent et enfant

Tu parcours les lignes de la feuille Recap

pour définir les clés du dictionnaire parent à partir des différentes occurrences figurant en colonne "Question"

pour définir les clés du dictionnaire enfant à partir des différentes occurrences figurant en colonne "Reference"

l'item associé à chaque clé étant une variable tableau à 2 dimensions comportant les éléments des colonnes "HUB" et "Slope mark"

Ensuite, tu parcours les lignes de la feuille Analysis par pas de 10 à partir de la ligne 3 et les colonnes par pas de 2 à partir de la colonne F

A l'aide de la méthode exists, tu pourras ainsi ventiler tous tes petits tableaux correspondant à tes différentes références

Bonne continuation Klin89

Merci beaucoup Klin89 pour ta réponse ! Je n'ai jamis fais de dictionnaire en VBA mais je vais essayer de suivre ta méthode, ça m'a l'air pas mal

re marielegrelle

A tester :

Option Explicit
Sub ventile()
Dim a, w(), i As Long, j As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    a = Sheets("Recap").Range("a1").CurrentRegion.Value
    For i = 2 To UBound(a, 1)
        If Not dico.exists(a(i, 2)) Then
            Set dico(a(i, 2)) = CreateObject("Scripting.Dictionary")
            dico(a(i, 2)).CompareMode = 1
        End If
        If Not dico(a(i, 2)).exists(a(i, 3)) Then
            ReDim w(1 To 2, 1 To 1)
        Else
            w = dico(a(i, 2))(a(i, 3))
            ReDim Preserve w(1 To UBound(w, 1), 1 To UBound(w, 2) + 1)
        End If
        w(1, UBound(w, 2)) = a(i, 1)
        w(2, UBound(w, 2)) = a(i, 4)
        dico(a(i, 2))(a(i, 3)) = w
    Next
    Application.ScreenUpdating = False
    With Sheets("Analysis").Range("a1").CurrentRegion
        With .Offset(2, 5).Resize(.Rows.Count - 2, .Columns.Count - 5)
            .ClearContents
        End With
        For i = 3 To .Rows.Count Step 10
            If dico.exists(.Cells(i, 2).Value) Then
                For j = 6 To .Columns.Count Step 2
                    If dico(.Cells(i, 2).Value).exists(.Cells(1, j).Value) Then
                        'w = dico.Item(.Cells(i, 2).Value).Item(.Cells(1, j).Value)
                        .Cells(i, j).Resize(UBound(dico.Item(.Cells(i, 2).Value).Item(.Cells(1, j).Value), 2), UBound(dico.Item(.Cells(i, 2).Value).Item(.Cells(1, j).Value), 1)).Value = _
                        Application.Transpose(dico(.Cells(i, 2).Value)(.Cells(1, j).Value))
                    End If
                Next
            End If
        Next
    End With
    Application.ScreenUpdating = True
End Sub

klin89

Re,

Le tableau des données (Recap) est dynamique.

Je te renvoie le fichier avec une actualisation automatique du TCD à l'activation de sa feuille.

Il y a de plus un bouton RAZ pour réinitialiser le tableau de données (Recap).

Il suffit alors de copier les nouvelles données.

Bon maintenant, je ne connais pas to process...

Cdlt.

42fichier-test.xlsm (63.94 Ko)

re,

Solution encore superbe de KLIN89 ...

Ha si je pouvais maitriser les dico et tableaux comme ça

je me pose toutefois la question: des formules auraient peut être été suffisantes puisque peu de données

P.

Un immense merci à vous tous ! Les deux solutions marchent très bien même parfaitement bien je dois dire

Et j'aurais découvert l'utilité des dicos, très pratique je dois dire !

Rechercher des sujets similaires à "vba remplissage tableau partir"