Sub Matrice2()
'Déclartion des variables
Dim iRow As Integer
Dim sColB As String
Dim sColC As String
Dim sColD As String
Dim sIdentite As String
Dim sIdentiteB As String
Dim sPotent As String
Dim sPerfor As String
Dim eCodeMatrice As LCodeMatrice
Dim iLCodif As Integer
Dim Donnees As String
Dim DonneesB As String
Dim fin As Long
Dim dico
Dim Cat As String
Dim impactMait As String
Dim OldIM As String
Dim ele
'Appel à la codification de la matrice
Codification.CodeMatrice
'Initialiser la feuille des talents matrice
Intialiser.InitTalentMatrice
Set dico = CreateObject("Scripting.dictionary")
With Sheets("Base")
fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne de la colonne A
For i = 5 To fin 'pour chaque ligne
Cat = .Range("B" & i) ' on récupère l'info de catégorie (colonne B)
impactMait = .Range("H" & i) & "-" & .Range("J" & i) & "-" & i 'on concatène les infos de la colonne H et J et le numéro de ligne
If Not dico.exists(Cat) Then 'si la Cat n'existe pas dans le dico
dico.Add Cat, impactMait 'on crée l'entrée avec ImpactMait comme valeur
Else 'sinon: l'entrée existe déjà
'on regarde les niveaux d'impacts et de maitrise
OldIM = dico(Cat)
If Split(impactMait, "-")(0) > Split(OldIM, "-")(0) Then 'on a un impact supérieur
dico(Cat) = impactMait ' on met à jour avec la nouvelle valeur
Else 'on regarde si la maitrise est plus grande
If Split(impactMait, "-")(1) > Split(OldIM, "-")(1) Then
dico(Cat) = impactMait ' on met à jour avec la nouvelle valeur
End If
End If
End If
Next i
End With
For Each ele In dico.keys 'on a dans le dico tous les éléments uniques==> on les parcourt un par un
'Récupèration de l'identité de la personne
iRow = Split(dico(ele), "-")(2) 'on récupère l'info de numéro de ligne sauvegardée
sColC = Application.ThisWorkbook.Worksheets("Base").Cells(iRow, 3)
sColD = Application.ThisWorkbook.Worksheets("Base").Cells(iRow, 4)
sColB = Application.ThisWorkbook.Worksheets("Base").Cells(iRow, 2)
sIdentite = sColC + " - " + sColD
sIdentiteB = sColB
'Récupèration de son potentiel et de sa performance
sPotent = Split(dico(ele), "-")(0)
sPerfor = Split(dico(ele), "-")(1)
'Recherche sa destination
For iLCodif = 0 To UBound(myListeCodif)
Set eCodeMatrice = myListeCodif(iLCodif)
If eCodeMatrice.sPotentiel = sPotent And eCodeMatrice.sPerforme = sPerfor Then
Donnees = Application.ThisWorkbook.Worksheets("MATRICE VISUALISATION C-D").Range(eCodeMatrice.sDestination)
Application.ThisWorkbook.Worksheets("MATRICE VISUALISATION C-D").Range(eCodeMatrice.sDestination) = Donnees + sIdentite & Chr(10) & ""
DonneesB = Application.ThisWorkbook.Worksheets("MATRICE VISUALISATION B").Range(eCodeMatrice.sDestination)
Application.ThisWorkbook.Worksheets("MATRICE VISUALISATION B").Range(eCodeMatrice.sDestination) = DonneesB + sIdentiteB & Chr(10) & ""
Exit For
End If
Next
iRow = iRow + 1
Next ele
'Return mouse pointer to normal display.
Application.Cursor = xlNormal
'Message
MsgBox "La mise à jour des données est terminée.", vbInformation
End Sub