Générer et classer par risque toutes les combinaisons possibles

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
MathildeNovice
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 24 janvier 2019
Version d'Excel : 2013 FR

Message par MathildeNovice » 24 janvier 2019, 10:57

Bonjour,

Mon problème est le suivant.
Je dois réaliser une classification des risques selon 5 critères (type de client, mode de paiement, type de contrat, mode de distribution, type d'opération), étant précisé que chaque critère se décompose en plusieurs possibilités (ex. pour le type de client : client physique résident France, client physique résident UE, client personne morale, etc.), et qu'à chacune de ces possibilités est allouée une note de risque (entre 1 et 3).
J'en suis arrivée au stade où je dois générer toutes les combinaisons possibles entre toutes les possibilités de ces 5 critères, et classer les combinaisons obtenues de la plus risquée à la moins risquée.
Cependant, je ne sais pas quelle formule utiliser pour réaliser cette tâche, qui manuellement me prendrait des jours.
Quelqu'un saurait-il comment procéder ?
J'ai mis un exemple en fichier joint anonymisé pour plus de clarté.

En vous remerciant,
Exemple.xlsx
(12.39 Kio) Téléchargé 9 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'332
Appréciations reçues : 266
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 24 janvier 2019, 12:41

Bonjour,

une proposition, sur base du fichier fourni.
Sub aargh()
    Set ws = Sheets("resultats")
    dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
    ws.Cells(4, 1).Resize(dl, 12).Clear
    With Sheets("cotation de chaque risque")
        ligne = 3
        For client = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            For mpp = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
                For contrat = 2 To .Cells(Rows.Count, 5).End(xlUp).Row
                    For distribution = 2 To .Cells(Rows.Count, 7).End(xlUp).Row
                        For opération = 2 To .Cells(Rows.Count, 9).End(xlUp).Row
                            ligne = ligne + 1
                            ws.Cells(ligne, 1) = .Cells(client, 1)
                            ws.Cells(ligne, 2) = .Cells(client, 2)
                            ws.Cells(ligne, 3) = .Cells(mpp, 3)
                            ws.Cells(ligne, 4) = .Cells(mpp, 4)
                            ws.Cells(ligne, 5) = .Cells(contrat, 5)
                            ws.Cells(ligne, 6) = .Cells(contrat, 6)
                            ws.Cells(ligne, 7) = .Cells(distribution, 7)
                            ws.Cells(ligne, 8) = .Cells(distribution, 8)
                            ws.Cells(ligne, 9) = .Cells(opération, 9)
                            ws.Cells(ligne, 10) = .Cells(opération, 10)
                            ws.Cells(ligne, 11) = (.Cells(client, 2) + .Cells(mpp, 4) + .Cells(contrat, 6) + .Cells(distribution, 8) + .Cells(opération, 10)) / 5
                        Next opération
                    Next distribution
                Next contrat
            Next mpp
        Next client
        ws.Range("A4").Resize(ligne - 3, 11).Sort key1:=ws.Range("K4"), order1:=xlDescending, key2:=ws.Range("A4"), order2:=xlAscending, Header:=xlNo
    End With
End Sub
spama.xlsm
(38.06 Kio) Téléchargé 12 fois
M
MathildeNovice
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 24 janvier 2019
Version d'Excel : 2013 FR

Message par MathildeNovice » 25 janvier 2019, 13:27

Bonjour, un grand merci, je vais tester cela de ce pas ! :)
M
MathildeNovice
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 24 janvier 2019
Version d'Excel : 2013 FR

Message par MathildeNovice » 25 janvier 2019, 13:27

Bonjour, un grand merci, je vais tester cela de ce pas ! :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message