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...
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 SubCordialement.
Merci, c'est parfait !
A peine une légère adaptation et je peux afficher un tableau de pro !