Sub Macro1()
Dim NbFonc As Long, PlgTab As Range
NbFonc = 11
Set PlgTab = Cells(4, "D").Resize(NbFonc, NbFonc)
PlgTab.Formula = "=OFFSET($Q$4,MOD(ROW()+COLUMN()," & NbFonc & "),0)"
PlgTab.Value = PlgTab.Value
PlgTab.Rows(NbFonc + 1).FormulaR1C1 = "=RAND()"
PlgTab.Resize(NbFonc + 1).Sort Key1:=PlgTab.Rows(NbFonc + 1), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
PlgTab.Rows(NbFonc + 1).ClearContents
PlgTab.Columns(NbFonc + 1).FormulaR1C1 = "=RAND()"
PlgTab.Resize(, NbFonc + 1).Sort Key1:=PlgTab.Columns(NbFonc + 1), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
PlgTab.Columns(NbFonc + 1).ClearContents
End Sub