Copier, couper, coller et vider le clipboard en désactivant le bouton s'il n'y a rien

Description

Mon code est très bien documenter afin d'être suivi facilement.

Le code est fait pou être mis dans un module.

Source / Exemple :


Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_UNDO = &HC7

Public Sub MenuColler()
'Analyse du champ de saisie
If TypeOf Screen.ActiveControl Is TextBox And Clipboard.GetFormat(vbCFText) Then
    Screen.ActiveControl.SelText = Clipboard.GetText()
    Exit Sub
End If
'analyse du contrôle PictureBox
If TypeOf Screen.ActiveControl Is PictureBox And Clipboard.GetFormat(vbCFBitmap) Then
    Screen.ActiveControl.Picture = Clipboard.GetData()
    Exit Sub
End If
End Sub

Public Sub MenuCopier()
'Analyse du champ de saisie
If TypeOf Screen.ActiveControl Is TextBox Then
    If Screen.ActiveControl.SelLength Then
        Clipboard.Clear
        Clipboard.SetText Screen.ActiveControl.SelText
        Exit Sub
    End If
End If
'Analyse du contrôle pictureBox
If TypeOf Screen.ActiveControl Is PictureBox Then
        Clipboard.Clear
        Clipboard.SetData Screen.ActiveControl.Image
        Exit Sub
    End If
End Sub

Public Sub MenuCouper()
Dim LongDébut, LongSel, LongFin As Integer
Dim Temp As String
'Commence par copier
MenuCopier
'Efface la sélection dans le champ de saisie
If TypeOf Screen.ActiveControl Is TextBox Then
    'Détermine la partie du texte à conser
    LongDébut = Screen.ActiveControl.SelStart
    'Avant la sélection
    LongSel = Screen.ActiveControl.SelLength
    Temp = Left(Screen.ActiveControl.Text, LongDébut)
    'Plus Après la sélection
    LongFin = Len(Screen.ActiveControl.Text) - (LongDébut + LongSel)
    Temp = Temp + Right(Screen.ActiveControl.Text, LongFin)
    'Actualise le contrôle
    Screen.ActiveControl.Text = Temp
    Exit Sub
End If
'Efface le contrôle PictureBox
If TypeOf Screen.ActiveControl Is PictureBox Then
    Screen.ActiveControl.Picture = LoadPicture("")
End If
End Sub

Public Sub MenuÉdition()
'Désactivation temporaire des commandes
'LeNom de la Feuille ou le controle est
Web.Couper.Enabled = False
Web.Copier.Enabled = False
Web.Coller.Enabled = False
Web.Vider.Enabled = False
'Analyse du champ de saisie
If TypeOf Screen.ActiveControl Is TextBox Then
    If Screen.ActiveControl.SelLength Then
        'LeNom dee la feuille
        Web.Couper.Enabled = True
        Web.Copier.Enabled = True
    End If
    If Clipboard.GetFormat(vbCFText) Then
        'LeNom de la feuille
        Web.Coller.Enabled = True
    End If
End If
'Analyse du contrôle image
If TypeOf Screen.ActiveControl Is PictureBox Then
    'LeNom de la feuille
    Web.Couper.Enabled = True
    Web.Copier.Enabled = True
    If Clipboard.GetFormat(vbCFBitmap) Or Clipboard.GetFormat(vbCFDIB) Or Clipboard.GetFormat(vbCFMetafile) Then
    LeNom de la feuille   
    Web.Coller.Enabled = True
    End If
End If
'On ne peut effacer le Presse-Papier que s'il contient du texte ou une image
If Clipboard.GetFormat(vbCFText) Or Clipboard.GetFormat(vbCFBitmap) Or Clipboard.GetFormat(vbCFMetafile) Or Clipboard.GetFormat(vbCFDIB) Then
Web.Vider.Enabled = True
End If
End Sub
Public Sub MenuVider()
Clipboard.Clear
End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.