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
| Sub prep_menu()
Dim i As Integer, j As Integer
With Sheets("Menu")
feuille = .Range("B1").Value
nom_menu = .Range("B3").Value
nbc_menu = .Range("IV1").End(xlToLeft).Column - 2
nbc_base = Sheets(feuille).Range("IV1").End(xlToLeft).Column
Dim colonne() As Integer
If .Cells(1, nbc_menu + 2).Value = "WilIndex" Then
.Cells(1, nbc_menu + 2).Value = ""
nbc_menu = nbc_menu - 2
End If
ReDim colonne(nbc_menu) As Integer
For i = 1 To nbc_menu
For j = 1 To nbc_base
If .Cells(1, i + 2).Value = Sheets(feuille).Cells(1, j).Value Then colonne(i) = j
Next j
Next i
For i = 1 To nbc_menu
If colonne(i) = 0 Then
MsgBox "Erreur : Colonne " & .Cells(1, i + 2).Value & " Inconnue dans la base"
Exit Sub
End If
Next i
.Range("C2:" & Chr(68 + nbc_menu) & "65000").ClearContents
End With
With Sheets(feuille)
nbl = .Range("A65500").End(xlUp).Row
For i = 2 To nbl
For j = 1 To nbc_menu
Sheets("Menu").Cells(i, j + 2) = .Cells(i, colonne(j))
Next j
Sheets("Menu").Cells(i, j + 3) = i
Next i
Sheets("Menu").Cells(1, nbc_menu + 4).Value = "WilIndex"
End With
memfeuille = ActiveSheet.Name
Sheets("Menu").Range("C:H").Sort _
Key1:=Sheets("Menu").Range("C2"), Order1:=xlAscending, _
Key2:=Sheets("Menu").Range("D2"), Order2:=xlAscending, _
Key3:=Sheets("Menu").Range("E2"), Order3:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
For i = 1 To nbc_menu - 1
mem = ""
nbl = Sheets("Menu").Cells(65000, i + 2).End(xlUp).Row
If i = 1 Then nbl_mem = nbl
For j = 2 To nbl
If Sheets("Menu").Cells(j, i + 2).Value = mem Then
Sheets("Menu").Cells(j, i + 2).Value = ""
Else
mem = Sheets("Menu").Cells(j, i + 2).Value
End If
Next j
Next i
cre_menu
End Sub |