désactiver un évenement

marrek

XLDnaute Nouveau
Bonjour,

voila après petite recherche, j'ai pas trouvé mon bonheur...donc voila ma question:
Commet faut il faire pour désactiver un évenement?
parce que je ne sais pas comment utiliser le code suivant pour l'adapter à mon probleme!

"Appiclation.enable.event =False"

J'ai un evenement: workbook open();
et je voudrais empecher le contenu de cet evenement de se lancer lors de l'enregistrement de mon classeur.

En esperant que vous pourrez m'aider!

ps: cette question est issue d'une autre discussion, mais vu que le sujet a changé, il m'a semblé preferable de la poser ici, en m'excusant si ce n'est pas approprié.
Cordialement
M.
 

job75

XLDnaute Barbatruc
Re : désactiver un évenement

Bonjour marrek,

Pour désactiver tous les évènements :

Application.EnableEvents = False

et impérativement en fin de macro :

Application.EnableEvents = True

L'évènement Open, a priori, n'a rien à voir avec l'enregistrement du fichier (évènement BeforeSave).

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : désactiver un évenement

Bonjour Marrek, bonjour le forum,

Je vois pas trop le rapport entre l'événement Open et l'enregistrement de ton classeur, l'un ne devrait pas déclencher l'autre...
Mais si tu as un événement Save qui lui ouvre une autre classeur je comprends mieux...

Dans ce cas il faudrait que tu places la ligne :
Code:
Application.EnableEvents = False
quelque part avant l'ouverture du fichier et surtout que tu rétablisses après avec :
Code:
Application.EnableEvents = True
Le danger de cette ligne et que, si par hasard, tu plantes avant avoir rétabli, il n'y a plus aucune macro ''evénementielle" qui fonctionne tant que tu n'auras fait relire ... = true

J'espère que je suis pas trop à coté de la plaque...

Édition :

Salut Job, décidément...
 
Dernière édition:

marrek

XLDnaute Nouveau
Re : désactiver un évenement

Bonsoir le forum, bonsoir Job et bonsoir Robert,

tout d'abord merci de votre aide précieuse.
Des petites précisions s'imposent meme si Robert a vu juste (au pas loin disons;D)

En fait le rapport entre la sauvegarde et l'open est que:
dans l'evenment workbook open, j'ai un code qui me réinitialise toutes les cellules. Concretement, il me met une plage de cellule dans une colonne et sur plusieurs feuilles à la valeur "?".
Ensuite l'utilisateur va donc changer toutes ces valeurs. Le but de la sauvegarde est de conserver ces valeurs bien entendu! or si j'enregistre betement le classeur, ben à l'ouverture je perdrai à nouveau tout le travail effectué!
C'est pour cela que je souhaite désactiver une fois pour toute l'evenement workbook open lors de ma sauvegarde.


Du coup j'ai essayé comme préconisé:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Application.EnableEvents = False

If Dir("G:\Documents and Settings\pierre\Bureau\projet.xls") <> "" Then
        Kill "G:\Documents and Settings\pierre\Bureau\projet.xls"
      End If

ActiveWorkbook.SaveCopyAs "G:\Documents and Settings\pierre\Bureau\projet.xls"



Application.EnableEvents = True

End Sub
mais là je suis pas sur que ça serve à grand chose du coup... donc j'ai rajouté le code suivant dans l'évenement open:
Code:
If ActiveWorkbook.FullName = "Etudeessai1" Then
For i = 1 To 14
    j = i

    Sheets("Cible" & j).Select
  
            For k = 4 To 36
            If IsEmpty(Cells(k, 3)) = False Then
            Cells(k, 4).Value = "?"
            End If
        Next k
       '-- Appliquer une couleur jaune à l'onglet de la Feuil1
    Sheets("Cible" & j).Tab.ColorIndex = 6
Next i
 ' je fais appel au module "initialisation2"
 Sheets("Bilan").Select
For l = 3 To 61
    
        If IsEmpty(Cells(l, 1)) = False And Cells(l, 1).Value <> "Validation possible ?" Then
        Cells(l, 3).Value = "?"
        ElseIf Cells(l, 1).Value = "Validation possible ?" Then Exit For
        End If
Next l

Sheets("Calcul").Visible = False
Sheets("MOA").Visible = False
Application.ScreenUpdating = True
ActiveWindow.DisplayWorkbookTabs = True


Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Sheets("Bilan").Select
UsfMenu.Show
Else:
Sheets("Calcul").Visible = False
Sheets("MOA").Visible = False
Application.ScreenUpdating = True
ActiveWindow.DisplayWorkbookTabs = True


Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Sheets("Bilan").Select
End If

Au final, l'enregistrement ( "projet") ne se réinitialise pasdonc ça c'était l'objectif!, sauf que maintenant le document originel lui non plus et là ça pose probleme!!
Je ne sais pas d'ou vient le probleme (je pense que ça doit venir de ma chaine "If workbook.name = Etudeessai"
...


Au secours !

En vous remerciant
Bonne soirée
 

job75

XLDnaute Barbatruc
Re : désactiver un évenement

Bonjour marrek, Robert, le forum,

Pas trop regardé ce que fabrique votre 2ème macro, mais d'évidence pour qu'elle puisse fonctionner il faut écrire :

Code:
If ActiveWorkbook.[COLOR="Red"]Name[/COLOR] = "Etudeessai1[COLOR="Red"].xls[/COLOR]" Then

Par ailleurs dans votre 1ère macro les EnableEvents et le Kill ne servent à rien me semble-t-il, l'enregistrement d'une copie écrasant le fichier s'il existe et ne déclanchant pas d'évènement...

A+
 

Statistiques des forums

Discussions
312 669
Messages
2 090 740
Membres
104 644
dernier inscrit
MOLOKO67