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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| Sub test()
'Attention, il faut repeter le type de la variable à déclarer
Dim SERIE As String, version As String, TERM As String, nom As String
Dim val As Integer 'Double 'On fera directement l'arrondi
Dim MaCell As Range, FindCell As Range
Dim FeuilResA As Worksheet
Dim OffsetTerm As Integer
'Inutil de selectionner la feuille ou la cellule, on n'y fera juste reference
'Sheets("res_a").Select
'Range("A1").Select
Set FeuilResA = ThisWorkbook.Sheets("res_a")
'Sheets("feuil1").Select
'Range("a1").Select
Set MaCell = ThisWorkbook.Sheets("feuil1").Range("A1")
While MaCell.value <> ""
If MaCell.value = "a" Then
nom = MaCell.value
SERIE = MaCell.Offset(0, 1).value
version = MaCell.Offset(0, 2).value
TERM = MaCell.Offset(0, 3).value
'On calcul directement la valeur arrondi
val = Int(CSng(MaCell.Offset(0, 4).value) * 10000)
'Sheets("res_a").Select
'Avant d'inscrire des donnée, il faut chercher si la seri existe déjà
'Pour cela on fait une recherche dans la colonne B
Set FindCell = FeuilResA.Columns("B").Find(SERIE, , xlValues)
'On regarde si on a trouver quelque chose
If FindCell Is Nothing Then
'La serie n'existe pas
'On crée la ligne
'On cherche la derniere cellule vierge de la colonne A et on la pointe avec notre variable Range
Set FindCell = FeuilResA.Cells(Rows.count, "A").End(xlUp).Offset(1)
'On renseigne les infos nom et serie
FindCell.value = nom
'On pointe la colonne suivante (Serie)
Set FindCell = FindCell.Offset(0, 1)
FindCell.value = SERIE
End If
'A partir d'ici, soit la ligne etait existante, soit on vient de créer une nouvelle ligne.
'Dans les 2 cas notre variable FindCell pointe bien la ligne contenant le nom et la serie recherchés
'On rajoute les données
'On regarde dans quelle colonne les données seront placées
Select Case TERM
Case "3Y"
OffsetTerm = 2
Case "5Y"
OffsetTerm = 3
Case "7Y"
OffsetTerm = 4
Case Else
OffsetTerm = 5
End Select
'Ici il faudra verifier la version
If FindCell.Offset(0, 1).value > version Then
'La version existante dans le tableau est superieur, on n'inscrit rien
ElseIf FindCell.Offset(0, 1).value < version Then
'version inferieur, on met a jour la version et on suprime les données existantes appartenant à une version plus ancienne
FindCell.Offset(0, 1).value = version
FindCell.Offset(0, 2).Resize(1, 4).value = ""
FindCell.Offset(0, OffsetTerm).value = val
Else
'Si le numero de version est le meme, on rajoute juste les données
FindCell.Offset(0, OffsetTerm).value = val
End If
'
'Remplacé plus haut par Select, qui est plus adapter
'If TERM = "3Y" Then
' FindCell.Offset(0, 2) = val * 10000
'ElseIf TERM = "5Y" Then
' FindCell.Offset(0, 3) = val * 10000
'
'ElseIf TERM = "7Y" Then
' FindCell.Offset(0, 4) = val * 10000
'Else
' FindCell.Offset(0, 5) = val * 10000
'End If
End If
'Sheets("feuil1").Select
'On pointe la ligne suivante
Set MaCell = MaCell.Offset(1, 0)
Wend
' Order by descending
' Call tri
MsgBox (" Fin de l'execution ")
End Sub |
Partager