Désactiver macro pendant exécution d'une autre

  • Initiateur de la discussion Initiateur de la discussion Marc_du_78
  • 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 !

Marc_du_78

XLDnaute Accro
Bonjour le Forum,
Une petite qui fera certainement sourire plus d'un où d'une d'entre vous.
Est-il possible de désactiver une macro lors de l'appel d'une autre, puis de réactiver la première.
Cette question car je ne pense pas que l'on peut avoir deux Worksheet_Change en même temps.
En vous remerciant.
 
Bonjour Marc,

Il n'y a jamais deux macros actives en même temps.
On peut lancer une deuxième macro à partir d'une première et revenir à la 1ere après l'execution de la 2ème, mais au grand jamais deux en mm temps
 
Bonjour mutzik, le Forum,

Alors j'ai véritablement un problème à ce niveau, mais je ne vois pas. Je te remercie de m'indiquer mon erreur.

Private Sub Worksheet_Change(ByVal Target As Range)
Call SelectMois
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Me.CmdBtton9.Visible = Not IsEmpty(Me.Range('AO1').Value)
If Not Target.Address(0, 0) = 'X1' Then Exit Sub
Call SelectMois
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim CellChange As Range
Set CellChange = Range('A:A')
If Not Application.Intersect(CellChange, Range(Target.Address)) _
Is Nothing Then
Call MemForm
'MsgBox 'Vous avez modifié la cellule' & Target.Address
End If
 
Bonjour Marc, Bertrand, bonjour le forum,

Marc je pense que tu veux bloquer l'éxécution d'une ou plusieurs macros événementielles qui se déclanche automatiquement comme les Événements Change ou Selection_Change d'une Worksheet. C'est possible avec :
Application.EnableEvents = False
qu'il faut toujours penser à rétablir en fin de code avec son contraire :
Application.EnableEvents = True

Le défaut de ce système est quand le code plante avant le débloquage (True) des macros événementielles. Comme il agit sur Excel directement, tu te retrouves sans aucune macros événemetielle qui fonctionne. Il faut, soit prévoir une gestion d'erreur du style On Error GoTo ... qui renvoie sur un Application.EnableEvents = True, soit placer cette action (True)à l'initialisation de l'UserForm ou au clic du bouton qui lance ta macro, par sécurité...
 
Bonjour Marc, Bertrand, bonjour le forum,

Marc on s'est croisés... Mais là je ne comprends plus. Je suppose que tu nous montres l'événement Change de trois onglet différents... Pour que nous puissions mieux comprendre, il nous faudrait un descriptif de ton fichier avec le nom des onglets et savoir à quel onglet respectif s'applique cet événement Change. Comme d'hab, l'idéal serait ton fichier ou un exemple basé sur ton fichier en pièce jointe.
 
Bonjour Robert, Bertrand, le Forum,

Oui c'est exactement ce que je cherche à faire et je te remercie pour ton aide Robert, sans oublier Bertrand. Je vais procéder à des essais en tenant compte de tes remarques.
En vous souhaitant une bonne journée.
 
Robert,
Mon classeur comporte (pour l'instant 3 feuilels) mais en l'occurence, il s'agit de la feuile nommée Vhs
A l'ouverture, ThisWorkbook me sélectionne le mois en cours (Merci à ERIC S)
Sur la feuille Vhs j'ai :
Private Sub Worksheet_Change(ByVal Target As Range)
Call SelectMois
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' Me.CmdBtton9.Visible = Not IsEmpty(Me.Range('AO1').Value)
'If Not Target.Address(0, 0) = 'X1' Then Exit Sub
'Call SelectMois
'End Sub
'Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Dim CellChange As Range
'Set CellChange = Range('A:A')
'If Not Application.Intersect(CellChange, Range(Target.Address)) _
'Is Nothing Then
'Call MemForm
'End If
'End Sub

Je veux bien joindre mon fichier, mais 100 ko zippé
Merci de te pencher sur ma demande.
 
Bonjour,
Juste pour vous dire que dans l'immédiat j'ai contourné le problème par l'adjonction d'un bouton et en écrivant mon code comme suit :

Sub MemForm()
Sheets('Vhs').Select
Call AppInact
Call ProInact
Range('A3:AV3').Select
Selection.Copy
Call MisFormMem
End Sub

Public Sub MisFormMem()
Dim derligne As Integer
Sheets('Vhs').Select
derligne = Sheets('Vhs').Range('a65536').End(xlUp).Row + 1
Range('a' & derligne & ':av' & derligne).Activate
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValidation, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range('A1').Activate
Call SelectMois
Exit Sub
End Sub
 
- 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
9
Affichages
746
Compte Supprimé 979
C
Réponses
21
Affichages
2 K
Retour