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

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.
 

mutzik

XLDnaute Barbatruc
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
 

Marc_du_78

XLDnaute Accro
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
 

Robert

XLDnaute Barbatruc
Repose en paix
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é...
 

Robert

XLDnaute Barbatruc
Repose en paix
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.
 

Marc_du_78

XLDnaute Accro
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.
 

Marc_du_78

XLDnaute Accro
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.
 

Marc_du_78

XLDnaute Accro
Voici un classeur partiel pour une meilleur appréhension. [file name=RecopieAuto_20060303124219.zip size=31888]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RecopieAuto_20060303124219.zip[/file]
 

Pièces jointes

  • RecopieAuto_20060303124219.zip
    31.1 KB · Affichages: 20

Marc_du_78

XLDnaute Accro
Excusez-moi, ayant voulu faire vite je n'avais pas mis tout le nécessaire.
Voici le bon fichier à examiner. [file name=RecopieAuto_20060303124803.zip size=34345]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RecopieAuto_20060303124803.zip[/file]
 

Pièces jointes

  • RecopieAuto_20060303124803.zip
    33.5 KB · Affichages: 24

Marc_du_78

XLDnaute Accro
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
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 846
Membres
103 972
dernier inscrit
steeter