Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

association de macros

  • Initiateur de la discussion Initiateur de la discussion gilrennais
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gilrennais

XLDnaute Nouveau
Bonjour à tous,
Merci à Job et Philippe,
Suivant vos conseils, j'ai fait un fichier Excel avec une macro qui oblige à "valider les macros", et un autre fichier Excel, avec une macro qui supprime le "copier-coller, ctrl+C, ctrl+V".
Utilisées séparément, ces 2 macros fonctionnent bien.
Problème: je n'arrive pas à réunir ces 2 macros dans un même fichier excel, qui oblige à accepter les macros, puis qui interdit le ctrl+V, une fois le fichier ouvert.
Seule la 1ere macro fonctionne. Je ne sais pas les mettre "l'une derrière l'autre" dans Thisworkbook, pour que la 2eme soit reconnue...
Qui peut m'aider?
 
Re : association de macros

Voila donc la 1ere macro, qui oblige à activer les macros à l'ouverture du fichier.
Elle se trouve dans Thisworkbook d'un fichier de 13 feuilles (1 par mois, plus la feuil1 qui contient le message disant qu'il faut obligatoirement activer les macros).

Private Sub Workbook_Open()
Dim i As Integer
For i = 2 To Sheets.Count
Sheets(i).Visible = True 'affiche toutes les feuilles
Next
Sheets(1).Visible = xlVeryHidden 'masque la 1ère feuille

End Sub



Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
Sheets(1).Visible = True 'affiche la 1ère feuille
For i = 2 To Sheets.Count
Sheets(i).Visible = xlSheetVeryHidden 'masque les autres feuilles
Next
'Application.ScreenUpdating = False
'ThisWorkbook.Save 'enregistre le fichier
'Application.ScreenUpdating = True

End Sub

Toute seule, elle fonctionne très bien.
Je veux ensuite supprimer le droit au Copier, Coller, CTRL+C, CTRL+V.
Voici une macro qui fonctionne aussi quand elle est seule dans Thisworkbook.


'*** In a standard module ***
Option Explicit

Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ' cut
Call EnableMenuItem(19, Allow) ' copy
Call EnableMenuItem(22, Allow) ' paste
Call EnableMenuItem(755, Allow) ' pastespecial

'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow

'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
Case Is = True
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub

Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub

Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub

'*** In the ThisWorkbook Module ***
Option Explicit

Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)
End Sub


Le but de ma question: je voudrais que ces deux macros puissent fonctionner ensemble dans ce même fichier de 13 feuilles, et donc que les gens soient obligés de valider les macros, et ne puissent plus faire ensuite de copier-coller, ctrl+C et V.
Je pense que je fais LA grosse erreur du débutant qui ne sais pas associer deux macros dans Thisworkbook.
Merci de votre aide.
Merci de votre aide
 
Re : association de macros

Re,

à priori, dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Dim i As Integer
For i = 2 To Sheets.Count
Sheets(i).Visible = True 'affiche toutes les feuilles
Next
Sheets(1).Visible = xlVeryHidden 'masque la 1ère feuille
Call ToggleCutCopyAndPaste(False)
End Sub
 
Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
Sheets(1).Visible = True 'affiche la 1ère feuille
For i = 2 To Sheets.Count
Sheets(i).Visible = xlSheetVeryHidden 'masque les autres feuilles
Next
'Application.ScreenUpdating = False
'ThisWorkbook.Save 'enregistre le fichier
'Application.ScreenUpdating = True
Call ToggleCutCopyAndPaste(True)
End Sub
 
Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub

dans un Module :

Code:
Option Explicit
 
Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ' cut
Call EnableMenuItem(19, Allow) ' copy
Call EnableMenuItem(22, Allow) ' paste
Call EnableMenuItem(755, Allow) ' pastespecial
 
'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow
 
'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
Case Is = True
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub
 
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub
 
Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub
 
Re : association de macros

Re,

à priori, rien, car j'ai Excel 2003 aussi 🙂

Tu peux poster un bout de fichier exemple qui correspondrait au classeur où tu veux l'appliquer ?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
556
Réponses
7
Affichages
978
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…