Option Explicit
Dim iCell As Integer, iColumn As Integer, iLine, j As Integer, i As Integer, iOffset As Integer
Dim iMaxCell As Integer
Dim iSheet As Integer, iWorkbooks As Integer, iWorksheets As Integer
Dim sColumnName As String
Dim dMoyenne As Double
Dim pi As PivotItem
Dim bidon
Dim sColumn As String
Function ConvertToLetter(iCol As Integer)
'Conversion du chiffre de la boucle en lettre (pour référencement)
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(iCol / 27)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
sColumn = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
sColumn = sColumn & Chr(iRemainder + 64)
End If
End Function
Sub TriMOB()
'Code pour voir combien de donner sur quel étendu.
iOffset = 2
Worksheets("TableauFinal").Activate
With Worksheets("TableauFinal")
.Range("A2:E65536").Select
Selection.ClearContents
.Range("J2:M65536").Select
Selection.ClearContents
.Range("O2:AA65536").Select
Selection.ClearContents
.Range("AD2:AF65536").Select
Selection.ClearContents
End With
For iSheet = 1 To Worksheets.Count
Select Case Worksheets(iSheet).Name
Case "RDY_MOB_Month1", "RDY_MOB_Month2", "RDY_MOB_Month3"
Worksheets(iSheet).Activate
Worksheets(iSheet).Rows("3:562").Select
Selection.Sort Key1:=Worksheets(iSheet).Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For iMaxCell = 1 To 20000
If Worksheets("RDY_MOB_Month1").Cells(iMaxCell, 1).FormulaR1C1 = "" Then
Exit For
End If
Next iMaxCell
For iColumn = 1 To 200
For j = 1 To 200
If Worksheets(iSheet).Cells(1, iColumn).FormulaR1C1 = Worksheets("TableauFinal").Cells(1, j).FormulaR1C1 And Worksheets("TableauFinal").Cells(1, j) <> "" Then
Call ConvertToLetter(iColumn)
Worksheets(iSheet).Range(sColumn & "3:" & sColumn & iMaxCell).Copy
sColumn = ""
Call ConvertToLetter(j)
Worksheets("TableauFinal").Select
Range(sColumn & iOffset).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
sColumn = ""
End If
Next j
Next iColumn
iOffset = iOffset + iMaxCell
End Select
Next iSheet
Worksheets("TableauFinal").Columns("A:AF").Select
Selection.Sort Key1:=Worksheets("TableauFinal").Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Worksheets("TableauFinal").Range("W2:Y65536").Select
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Worksheets("Total").PivotTables("TableauTotal").PivotCache.Refresh
Call DynamicSdev
Call FilterContingency
End Sub
Sub DynamicSdev()
Dim dSdev As Double
For Each pi In Worksheets("Total").PivotTables("TableauTotal").PivotFields("Surname ").PivotItems
pi.Visible = True
Next
For iColumn = 13 To 14
iOffset = 0
For iCell = 16 To 20000
If Worksheets("Total").Cells(iCell, iColumn).Value > 0 Then
iOffset = iOffset + 1
dSdev = dSdev + (Worksheets("Total").Cells(iCell, iColumn).Value - Worksheets("Total").Cells(5, iColumn + 6)) ^ 2
dMoyenne = dMoyenne + Worksheets("Total").Cells(iCell, iColumn).Value
End If
Next iCell
Worksheets("Total").Cells(4, iColumn).Value = iOffset
dMoyenne = dMoyenne / iOffset
dSdev = Sqr(1 / iOffset * dSdev)
Worksheets("Total").Cells(5, iColumn).Value = Worksheets("Total").Cells(5, iColumn + 6).Value
Worksheets("Total").Cells(6, iColumn).Value = dSdev
Worksheets("Total").Cells(8, iColumn).Value = dMoyenne + 2 * dSdev
Next iColumn
End Sub
Sub FilterContingency()
Dim icelloffset As Integer
Worksheets("Total").Activate
icelloffset = 16
For iCell = 16 To 20000
If Worksheets("Total").Cells(icelloffset, 4).Value = "" Then
Exit For
End If
With Worksheets("Total").PivotTables("TableauTotal").PivotFields("Surname ")
.PivotItems(Worksheets("Total").Cells(icelloffset, 4).Value).Visible = True
End With
Select Case Worksheets("Total").Cells(icelloffset, 6).FormulaR1C1
Case "BB"
If Worksheets("Total").Cells(icelloffset, 8).Value < Worksheets("Total").Cells(8, 13).Value Then
With Worksheets("Total").PivotTables("TableauTotal").PivotFields("Surname ")
.PivotItems(Worksheets("Total").Cells(icelloffset, 4).Value).Visible = False
End With
Else
icelloffset = icelloffset + 1
End If
Case "Cell"
If Worksheets("Total").Cells(icelloffset, 8).Value < Worksheets("Total").Cells(8, 14).Value Then
With Worksheets("Total").PivotTables("TableauTotal").PivotFields("Surname ")
.PivotItems(Worksheets("Total").Cells(icelloffset, 4).Value).Visible = False
End With
Else
icelloffset = icelloffset + 1
End If
End Select
Next iCell
End Sub