Croisement/jointure entre deux tableaux Excel

Bonjour

Cela fait longtemps que je ne suis pas venu sur le forum. Désolé.

Voilà je vous explique mon dilemme.

J'ai deux tableaux distincts

  • l'un listant en lignes des activités et en colonne des tendances et au croisement une croix si la tendance impacte l'activité
  • un autre tableau listant en ligne des compétences et en colonnes les activités (les mêmes activités) et au croisement une croix si la compétence est requise pour l'activité

et je souhaiterai faire une troisième tableau (et là je sèche) reprenant les compétences en ligne et les tendances les impactant en colonne.

Comme je ne suis pas sûr d'être clair je vous joins un fichier exemple avec en dernier onglet le résultat attendu.

Merci de votre aide

Cordialement

Bonjour

Tu devrais expliquer comment tu remplis ton tableau "Résultat souhaité" …

Bye !

Bonjour,

L'objectif de ce troisième tableau à construire : j'ai plusieurs tendance de métier par activité et plusieurs compétence par activité. Je souhaite donc savoir quelles compétences développer pour quelles tendances

Fonctionne pas avec de simples recherchev car plusieurs choix posibles, le tableau doit donc permettre de prioriser les compétences qui reviennent le plus souvent.

Merci de votre aide ! ☺

Bonsoir,

Voici une proposition, à adapter, pas très sophistiquée, mais ça le rend peut-être plus aisément adaptable.

Elle présuppose que tous les tableaux sont préconstitués, pour les deux premiers cela va de soi puisque c'est la source pour constituer le 3e. Mais le 3e est supposé doté de ses en-têtes de lignes et de colonnes, comme les autres.

En outre, on considère que dans ces en-têtes, les Compétences, les Activités et les Tendances sont toujours placées dans le même ordre.

La macro ne s'occupe pas des en-têtes, elle ne considère que la position pour déterminer comment servir le tableau résultat.

Les feuilles sont désignées par leur rang, et il sera facile de remplacer par le nom... De même on prend les plages de données par leurs références qu'il sera facile de remplacer par les références de plage des tableaux source.

On aurait pu opérer la détermination des dimensions de tableaux par la macro, cependant avec la manie croissante de détacher de façon variée les données en feuilles de la ligne 1 et de la colonne A, cela oblige à des contorsions dont on pourrait se dispenser... (de fait je m'en dispense !)

Sub TableauCompétencesTendances()
    Dim dTa As Object, dAc As Object, AT, CA, CT, C, T, k, i&, j&, n%, nn%
    Set dTa = CreateObject("Scripting.Dictionary")
    Set dAc = CreateObject("Scripting.Dictionary")
    AT = Worksheets(1).Range("B6:F10").Value
    For j = 1 To UBound(AT, 2)
        For i = 1 To UBound(AT, 1)
            If UCase(AT(i, j)) = "X" Then
                dTa("T" & j) = dTa("T" & j) & ";" & "A" & i
            End If
        Next i
    Next j
    CA = Worksheets(2).Range("B5:F8").Value
    For j = 1 To UBound(CA, 2)
        For i = 1 To UBound(CA, 1)
            If UCase(CA(i, j)) = "X" Then
                dAc("A" & j) = dAc("A" & j) & ";" & "C" & i
            End If
        Next i
    Next j
    With Worksheets(3).Range("B7:F10")
        .ClearContents
        CT = .Value
        For Each k In dTa.keys
            j = CLng(Replace(k, "T", ""))
            T = Split(dTa(k), ";")
            For n = 1 To UBound(T)
                If dAc.exists(T(n)) Then
                    C = Split(dAc(T(n)), ";")
                    For nn = 1 To UBound(C)
                        i = CLng(Replace(C(nn), "C", ""))
                        CT(i, j) = "X"
                    Next nn
                End If
            Next n
        Next k
        .Value = CT
    End With
End Sub

Cordialement.

Merci, c'est parfait !

A peine une légère adaptation et je peux afficher un tableau de pro !

Rechercher des sujets similaires à "croisement jointure entre deux tableaux"