Boucle for et plusieurs if enchainés --> comment optimiser le code?
Bonjour,
Dans le cadre d'un exercice, je souhaite faire un ranking un peu comme les agences de notations. :lol:
Dans la feuille 1, j'ai 4000 entreprises portant chacune un n° pr les identifier en colonne A, une année en colonne B et leur note historique pour l'année correspondante en colonne L.
Je souhaite faire des petites matrices en Feuil 3 pour savoir de manière précise, combien d'entreprises classées AAA en 1995 sont restées AAA en 1996 ou devenues AA etc...
Ainsi, j'ai réalisé le bout de code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Sub MatriceTransitionAAA9596()
Dim i As Integer
Dim j As Integer
j = 0
With Sheets("Feuil3").Cells(11, "B")
For i = 2 To 830
If Sheets("Feuil1").Cells(i, "A") = Sheets("Feuil1").Cells(i + 1, "A") Then
If Sheets("Feuil1").Cells(i, "B").Value = 1995 And Sheets("Feuil1").Cells(i + 1, "B").Value = 1996 Then
If Sheets("Feuil1").Cells(i, "L") = "AAA" Then
If Sheets("Feuil1").Cells(i + 1, "L") = "AAA" Then
.Value = .Value + 1
End If
End If
End If
End If
Next
End With
With Sheets("Feuil3").Cells(11, "C")
For i = 2 To 830
If Sheets("Feuil1").Cells(i, "A") = Sheets("Feuil1").Cells(i + 1, "A") Then
If Sheets("Feuil1").Cells(i, "B").Value = 1995 And Sheets("Feuil1").Cells(i + 1, "B").Value = 1996 Then
If Sheets("Feuil1").Cells(i, "L") = "AAA" Then
If Sheets("Feuil1").Cells(i + 1, "L") = "AA" Then
.Value = .Value + 1
End If
End If
End If
End If
Next
End With |
Je vous passe toutes les notes car ca deviendrait redondant... :zoubi:
Ma macro fonctionne mais je me doute que le code est pas optimisé... 8O
Je voudrais savoir si quelqu'un a une meilleure idée que la mienne? :)
Merci d'avance! :ccool: