Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias _
"ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
Private Type CHOOSECOLOR
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
Flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'affiche la palette de couleur et renvoie le "code couleur"
Public Function GetColor() As Long
Dim cc As CHOOSECOLOR
Dim Custcolor(16) As Long
Dim lReturn As Long
cc.lStructSize = Len(cc)
cc.lpCustColors = StrConv(CustomColors, vbUnicode)
cc.Flags = 0
If CHOOSECOLOR(cc) <> 0 Then
GetColor = cc.rgbResult
CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
Else
GetColor = -1
End If
End Function
Public Sub CopierOnglet()
Dim nomOnglet As String
Dim couleurOnglet As Long
Dim nouvelOnglet As Worksheet
'récupérer le nom du nouvel onglet
nomOnglet = Application.InputBox("Nom du nouvel onglet :", , , , , , , 2)
'récupérer la couleur du nouvel onglet
couleurOnglet = GetColor()
'créer une copie (en dernière position) de la feuille "B2008 new 1"
With ThisWorkbook
.Sheets("B2008 new 1").Copy after:=.Sheets(.Sheets.Count)
Set nouvelOnglet = .Sheets(.Sheets.Count)
End With
With nouvelOnglet
'définir le nom du nouvel onglet
.Name = nomOnglet
'définir la couleur du nouvel onglet
.Tab.Color = couleurOnglet
End With
End Sub