Option Explicit Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 'limitation sur le menu contextuel qui apparait lors du click-droit sur la feuille active 'la limitation aura lieu sur la colonne "A" If Not Intersect(Target, Columns("A")) Is Nothing Then Activer_Bouton_CopierColler "Cell", , False Else Activer_Bouton_CopierColler "Cell" End If End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not Intersect(Target, Columns("A")) Is Nothing Then Activer_Bouton_CopierColler "Standard", , False 'barre d'outil standard Activer_Bouton_CopierColler "edition", True, False 'menu édition Activer_CombiTouches_CopierColler False 'les combinaisons de touches Else Activer_Bouton_CopierColler "Standard" Activer_Bouton_CopierColler "edition", True Activer_CombiTouches_CopierColler End If End Sub
Option Explicit Sub Activer_Bouton_CopierColler(ByVal MaCmdBar As String, Optional ByVal Menu As Boolean False, Optional ByVal Activer As Boolean True) Dim bts As Object 'dimensionné en object pour la compatibilité xl2003 et XL2007 et plus If Menu = False Then 'est-ce un menu ? 'ce n'est pas un menu Set cmdbar = CommandBars(MaCmdBar).Controls Else 'c'est un menu Set cmdbar = CommandBars("Worksheet Menu Bar").Controls(MaCmdBar).Controls End If For Each bts In cmdbar 'pour chaque bouton de la commandebar spécifiée Select Case bts.ID 'on regarde son id Case 19, 21, 22, 755, 6002 'si c'est un des boutons recherchés 'l'état actuel est-il different de l'état demmandé ? si il n'est pas different on arrete tout If (bts.Enabled True And Activer True) Or (bts.Enabled = False And Activer = False) Then Exit Sub bts.Enabled = Not bts.Enabled 'on change son état End Select Next End Sub Sub Activer_CombiTouches_CopierColler(Optional ByVal Activer As Boolean = True) 'active ou désactive les combinaisons de touches Ctrl+C, Ctrl+v, Ctrl+x If Activer = False Then 'ici on desactive : Application.OnKey "^c", "" 'Ctrl+C Application.OnKey "^v", "" 'Ctrl+V Application.OnKey "^x", "" 'Ctrl+X Else 'ici on active : Application.OnKey "^c" Application.OnKey "^v" Application.OnKey "^x" End If
Sub Activer_Bouton_CopierColler(ByVal MaCmdBar As String, Optional ByVal Menu As Boolean False, Optional ByVal Activer As Boolean True) Dim bts As Object 'dimensionné en object pour la compatibilité xl2003 et XL2007 et plus Dim cmdbar As Object '<--- la déclaration à ajouter If Menu = False Then 'est-ce un menu ? 'ce n'est pas un menu Set cmdbar = CommandBars(MaCmdBar).Controls Else 'c'est un menu Set cmdbar = CommandBars("Worksheet Menu Bar").Controls(MaCmdBar).Controls End If For Each bts In cmdbar 'pour chaque bouton de la commandebar spécifiée Select Case bts.ID 'on regarde son id Case 19, 21, 22, 755, 6002 'si c'est un des boutons recherchés 'l'état actuel est-il different de l'état demmandé ? si il n'est pas different on arrete tout If (bts.Enabled True And Activer True) Or (bts.Enabled = False And Activer = False) Then Exit Sub bts.Enabled = Not bts.Enabled 'on change son état End Select Next End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Column Case 1, 2, 4 '<<<<<<<<<<<<<<<=============colonnes A, B et D OpenClipboard 0 EmptyClipboard CloseClipboard End Select End Sub
et ça va faire quoi de vider le presse papier?
et le code que tu m'as donné je le met en plus du précédent dans un nouveau module c'est ça ?
Est ce qu'il est possible d'écrire ce code pour plusieurs colonnes d'un coup?