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
|
Option Explicit
Sub Test()
'Declaration des variables
Dim dl As Long
Dim Section As String
Dim CellActive As Range
Dim Celltowrite As Range
Dim Cell_test As Range
Dim FSource As Worksheet
Dim FCible As Worksheet
Dim Cell As Range
Dim Un As Collection, i As Long, n_ligne As Long, a As Long
Dim Sum As Long
Dim ssdoublon()
Dim Plage As Range
Dim Heure As Long
'On récupère les valeurs données par l'opérateur
'Feuille Source
Set FSource = Worksheets("Cmd")
Section = FSource.Range("B2").Value
'On va rentrer les valeurs données
'Feuille Cible
Set FCible = Worksheets(Section)
With ActiveSheet
dl = FCible.Range("D" & .Rows.Count).End(xlUp).Row
End With
Set Plage = FCible.Range("D2:D" & dl)
Set Un = New Collection
On Error Resume Next
'On parcourt la plage de donnée
For Each Cell In Plage
If Cell <> "" Then Un.Add Cell, CStr(Cell) 'Si la valeur est différent des autres on la prends sinon on passe
Next Cell
On Error GoTo 0
For i = 1 To Un.Count
ReDim Preserve ssdoublon(i - 1)
ssdoublon(i - 1) = Un.Item(i)
Next i
Heure = 0 'on inialise
For i = 0 To UBound(ssdoublon)
' MsgBox ssdoublon(i)
' à la place remplis ta listbox
'On ecrit le projet sur notre ligne de sortie
n_ligne = 1
'Set Celltowrite = FSource.Cells(n_ligne, 1)
FSource.Cells(n_ligne + i, 5) = ssdoublon(i)
Sum = 0 'on initalise
For Each Cell In Plage
If Cell = ssdoublon(i) Then Sum = Sum + Cell.Offset(0, 2).Value 'Si le projet est le bon on récupère son heure
Next Cell
'On écrit la somme des heures travaillées sur un projet
FSource.Cells(n_ligne + i, 6) = Sum
'On somme les heures (pour avoir la somme des heures totales)
Heure = Heure + Sum
Next i
'On écrit la somme des heures travaillées
FSource.Cells(n_ligne + i, 6) = Heure
For a = 0 To i
FSource.Cells(n_ligne + a, 7) = FSource.Cells(n_ligne + a, 6) / Heure
Next a
For a = 0 To i - 1
FSource.Cells(n_ligne + a, 8) = FSource.Cells(n_ligne + a, 7) * FSource.Cells(2, 3)
Next a
Set Un = Nothing
End Sub |
Partager