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

Soyez le premier à donner votre avis sur cette source.

Vue 11 762 fois - Téléchargée 774 fois

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

Ajouter un commentaire

Commentaires

ajdw
Messages postés
18
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
16 septembre 2008
-
Super boulot, simple et efficace. Et merci surtout pour les commentaires, au moins, on comprend ce qu'on lit.
sethlaerce
Messages postés
30
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
4 octobre 2010
-
Bon boulot cool crash 9/10. il fallait que tu le fasse!
mannou1983
Messages postés
7
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
7 mai 2008
-
merci ;)
botelec
Messages postés
41
Date d'inscription
vendredi 20 juin 2003
Statut
Membre
Dernière intervention
11 septembre 2010
1 -
Plutôt que d'utiliser une textbox pourquoi ne pas utiliser un richtexbox?
Tu pourrais alors afficher le texte,mais aussi les images , fichiers et objets du presse papier et ainsi conclure vraiment sur les types de fichiers presents dans le presse papier!
bayhs
Messages postés
6
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
8 octobre 2003
-
Ton code est bien mais comment fais-tu pour ajouter les options :
Annuler(Ctrl+Z) et Sélectionner (Ctrl+A)

Merci

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.