Public usf
Public CtrL As Object
Sub createmenu(ctl As Object)
Dim barre, arrbutton
Set CtrL = ctl
arrbutton = Array("Couper:ncouper", "Copier:ncopier", "Coller:ncoller", "Font Color:fontcolor", "Back Color:Pbackcolor")
delebar
Set barre = Application.CommandBars.Add("CopierColler", msoBarPopup, False, True)
For i = 0 To UBound(arrbutton)
With barre.Controls.Add(msoControlButton, 1, , , True)
.Caption = Split(arrbutton(i), ":")(0)
.Tag = ctl.Name
If .Caption = "Couper" Then
If ctl.SelLength = 0 Or TypeName(ctl) = "ComboBox" Then .Enabled = False
End If
If .Caption = "Copier" And ctl.Value = "" Then .Enabled = False
.OnAction = Split(arrbutton(i), ":")(1)
End With
Next
barre.ShowPopup
End Sub
Sub delebar()
On Error Resume Next
CommandBars("CopierColler").Delete
End Sub
Sub ncouper()
Dim valeur$, oldvaleur$
With usf.Controls(Application.CommandBars.ActionControl.Tag)
oldvaleur = .Value
valeur = Mid(.Value, .SelStart + 1, .SelLength)
.Value = Mid(oldvaleur, 1, .SelStart) & Mid(oldvaleur, .SelStart + 1 + .SelLength, Len(oldvaleur))
End With
With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText valeur: .PutInClipboard: End With
End Sub
Sub ncopier()
Dim valeur$
valeur = usf.Controls(Application.CommandBars.ActionControl.Tag).Value
With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText valeur: .PutInClipboard: End With
End Sub
Sub ncoller()
Dim valeur$
With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: valeur = .GetText: End With
If UBound(Split(valeur, vbCrLf)) = 1 Then valeur = Replace(valeur, vbCrLf, "")
Select Case TypeName(CtrL)
Case "ComboBox"
'Control.Value = valeur'selectionne l'item
Control.AddItem valeur 'j'ajoute un item a la combo (il faut quelle soit développée)
Control.DropDown
Case "TextBox"
CtrL.Value = valeur
End Select
'With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText "": .PutInClipboard: End With
End Sub
Sub fontcolor()
If Application.Dialogs(xlDialogEditColor).Show(2, 255, 0, 0) = True Then
usf.Controls(Application.CommandBars.ActionControl.Tag).ForeColor = ActiveWorkbook.Colors(2)
End If
End Sub
Sub pbackcolor()
If Application.Dialogs(xlDialogEditColor).Show(2, 255, 0, 0) = True Then
usf.Controls(Application.CommandBars.ActionControl.Tag).BackColor = ActiveWorkbook.Colors(2)
End If
End Sub