OVH Cloud OVH Cloud

Désactiver macro en VBA

10 réponses
Avatar
John Fuss
Bonjour, j'ai un fichier Excel qui en ouvre un autre, est-il possible de
désactuiver les macros du fichier ouvert ??

Merci

John

10 réponses

Avatar
FxM
Bonsoir,

Sub ouvre_le_second()
application.enableevents = false
workbook.open "c:le_second.xls"
application.enableevents = true
end sub

@+
FxM






John Fuss wrote:

Bonjour, j'ai un fichier Excel qui en ouvre un autre, est-il possible de
désactuiver les macros du fichier ouvert ??

Merci

John




Avatar
Denis Michon
Bonjour FxM,


Est-ce possible que tu veuilles nous en passeer un petite vite ?

Selon moi, cette ligne de code : "application.enableevents = false" ne désactive pas les macros mais les événements des
objets "Feuille" et du "ThisWorkbook" .

Lorsque le fichier est déjà ouvert, je ne crois pas qu'il y ait un moyen de désactiver les macros. Pour ce faire, tu
dois l'indiquer au moment d'ouvrir le fichier lorsqu'excel t'affiche un message à cet effet.

Pour ouvrir un fichier par macro et désactiver les macros : Voici la seule façon que j'ai trouvée :


'---------------------
Sub OpenFileWithoutMacro()

'Désactive complètement l'exécution des macros du fichier.
'N'affecte pas le comportement des autres fichiers ouverts.
'Cette procédure doit être appelé à partir de la feuille
'de calcul et non de la fenêtre VBE à cause des commandes sendkeys

Dim Chemin As String, Fichier As String

'A RENSEIGNER
Chemin = "c:Mes documents"
Fichier = "Les classeurs.xls"

'Les 2 commandes suivantes s'assurent que
'la fenêtre "Open" pointe vers le bon répertoire
SendKeys "{esc}"
Application.Dialogs(xlDialogOpen).Show Chemin

'Ouvre le fichier en désactivant la macro.
SendKeys "%Fo" & Fichier & "%od"

End Sub

'---------------------
Sub OuvrirFichierSansActiverLesMacros()
Dim Chemin As String, Fichier As String
'A renseigner
Chemin = "c:Mes documents"
Fichier = "Les classeurs.xls"

OpenFileWithoutMacro Chemin, Fichier

End Sub
'---------------------


Salutations!




"FxM" a écrit dans le message de news:u%
Bonsoir,

Sub ouvre_le_second()
application.enableevents = false
workbook.open "c:le_second.xls"
application.enableevents = true
end sub

@+
FxM






John Fuss wrote:

Bonjour, j'ai un fichier Excel qui en ouvre un autre, est-il possible de
désactuiver les macros du fichier ouvert ??

Merci

John




Avatar
FxM
Bonsoir Denis,

Est-ce possible que tu veuilles nous en passeer un petite vite ?
Mais qu'est-ce y dit ? ;o)


Selon moi, cette ligne de code : "application.enableevents = false" ne désactive pas les macros mais les événements des
objets "Feuille" et du "ThisWorkbook" .
J'ai pris la question comme suit : le fichier A est ouvert et comporte

une macro pour ouvrir le fichier B. Le fichier B comporte des macros
qu'il ne faut pas lancer au démarrage.

S'il faut complètement désactiver les macros, enableevents n'est PAS
la solution.

@+
FxM

Avatar
Denis Michon
Bonsoir FxM,

Et en complément, pour désactiver La procédure Open d'un classeur, ta solution n'est valide que pour Excel 2002. (Je
n'ai pas eu l'opportunité de la testé sur 2002. mais elle ne fonctionne pas sur les versions plus anciennes... et c'est
testé.)

;-)


Salutations!



"FxM" a écrit dans le message de news:
Bonsoir Denis,

Est-ce possible que tu veuilles nous en passeer un petite vite ?
Mais qu'est-ce y dit ? ;o)


Selon moi, cette ligne de code : "application.enableevents = false" ne désactive pas les macros mais les événements
des

objets "Feuille" et du "ThisWorkbook" .
J'ai pris la question comme suit : le fichier A est ouvert et comporte

une macro pour ouvrir le fichier B. Le fichier B comporte des macros
qu'il ne faut pas lancer au démarrage.

S'il faut complètement désactiver les macros, enableevents n'est PAS
la solution.

@+
FxM

Avatar
FxM
Bonsoir Denis,

Et en complément, pour désactiver La procédure Open d'un classeur, ta solution n'est valide que pour Excel 2002. (Je
n'ai pas eu l'opportunité de la tester sur 2002. mais elle ne fonctionne pas sur les versions plus anciennes... et c'est
testé.)
Mais qu'est-ce y re-dit ? ;o)) Je suis perdu là ! Voilà le test que je

viens de faire sous Excel 2000 :

Créer un classeur, placer 42 en B2. Dans le module thisworkbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Range("A1").Value = Sheets("Feuil1").Range("B1").Value
MsgBox "B open"
End Sub
Sauvegarde du fichier sous le nom B.xls. En déroulant en pas-à-pas, la
cellule A1 prend la valeur 42 et le msgbox est affiché. Quitter B sans
sauvegarder.

Créer un second classeur, ouvrir VBE, insérer un module et y copier ce
qui suit : Sub test()
Workbooks.Open "d:inboxb.xls"
End Sub
Sauvegarder ce second classeur sous le nom C.xls. En déroulant en
pas-à-pas, le classeur B s'ouvre, la cellule A1 prend la valeur 42 et le
msgbox est affiché. Quitter C sans sauvegarder. Ouverture de C,
activation des macros. Rien de spécial. Outils | macros | macros | test
-> 42 en A1 + msgbox. Fermeture de B sans sauvegarder.
Modification de la macro test comme suit :
Sub test()
Application.EnableEvents = False
Workbooks.Open "d:inboxb.xls"
Application.EnableEvents = True
End Sub
Enregistrement de C.xls. Même test : ouverture, activation, lancement de
test -> B est ouvert, A1 est vide, le msgbox n'est pas affiché.
Autre test : Dans C.xls, placer un workbook_open qui lancera la macro
test. -> Activation des macros, B est ouvert, A1 est vide, pas de msgbox.

Allez, hop au dodo. Demain, il y a école ! Une ch'tite macro pour me
bercer ? ;o))

Amicalement
FxM

Avatar
John Fuss
Bonjour, merci pour vos réponses.

Je cherche à désactiver les macros accessibles via des boutons sur un
fichier Excel qui est lancé via ma macro.

John

"FxM" a écrit dans le message de
news:%
Bonsoir Denis,

Et en complément, pour désactiver La procédure Open d'un classeur, ta
solution n'est valide que pour Excel 2002. (Je


n'ai pas eu l'opportunité de la tester sur 2002. mais elle ne fonctionne
pas sur les versions plus anciennes... et c'est


testé.)
Mais qu'est-ce y re-dit ? ;o)) Je suis perdu là ! Voilà le test que je

viens de faire sous Excel 2000 :

Créer un classeur, placer 42 en B2. Dans le module thisworkbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Range("A1").Value = Sheets("Feuil1").Range("B1").Value
MsgBox "B open"
End Sub
Sauvegarde du fichier sous le nom B.xls. En déroulant en pas-à-pas, la
cellule A1 prend la valeur 42 et le msgbox est affiché. Quitter B sans
sauvegarder.

Créer un second classeur, ouvrir VBE, insérer un module et y copier ce
qui suit : Sub test()
Workbooks.Open "d:inboxb.xls"
End Sub
Sauvegarder ce second classeur sous le nom C.xls. En déroulant en
pas-à-pas, le classeur B s'ouvre, la cellule A1 prend la valeur 42 et le
msgbox est affiché. Quitter C sans sauvegarder. Ouverture de C,
activation des macros. Rien de spécial. Outils | macros | macros | test
-> 42 en A1 + msgbox. Fermeture de B sans sauvegarder.
Modification de la macro test comme suit :
Sub test()
Application.EnableEvents = False
Workbooks.Open "d:inboxb.xls"
Application.EnableEvents = True
End Sub
Enregistrement de C.xls. Même test : ouverture, activation, lancement de
test -> B est ouvert, A1 est vide, le msgbox n'est pas affiché.
Autre test : Dans C.xls, placer un workbook_open qui lancera la macro
test. -> Activation des macros, B est ouvert, A1 est vide, pas de msgbox.

Allez, hop au dodo. Demain, il y a école ! Une ch'tite macro pour me
bercer ? ;o))

Amicalement
FxM




Avatar
fxm
Bonsoir,

Je cherche à désactiver les macros accessibles via des boutons sur un
fichier Excel qui est lancé via ma macro.


Et si tu caches les boutons ? Pas de bouton, pas de macros ;o)

@+
FxM

Avatar
John Fuss
Euh... oui mais j'ai aussi des macros du style, à chaque changement de
cellule... à chaque changement de feuille...

etc.

J'ai essayé pour info le fameux Application.EnableEvents mais c'était pas
top, et pour le moement j'ouvre mon classeur excel et je copy direct les
feuilles qui m'interessent ds un nouveau classeur sur lequel je travail...

Voilà

mais si qq'un à l'info je suis preneur...

John


"fxm" a écrit dans le message de
news:u%
Bonsoir,

Je cherche à désactiver les macros accessibles via des boutons sur un
fichier Excel qui est lancé via ma macro.


Et si tu caches les boutons ? Pas de bouton, pas de macros ;o)

@+
FxM




Avatar
Croquignol
Bonjour,


Bonjour, j'ai un fichier Excel qui en ouvre un autre, est-il possible de
désactuiver les macros du fichier ouvert ??


Si tu veux simplement désactiver sa procédure Workbook_Open :

Application.EnableEvents = False
Workbooks.Open("C:MonClasseur.xls")
Application.EnableEvents = True

(remplace "MonClasseur.xls" par le classeur dont tu veux désactiver les
macros)

Si tu veux désactiver la totalité de ses macros :

- Insère un module de classe ("Classe1") dans le 1er classeur et copie les
lignes suivantes :

Public WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
On Error Resume Next
If Wb Is Workbooks("MonClasseur.xls") Then _
CommandBars.FindControl(ID:05).Execute
End Sub

- Dans le module ThisWorkbook du 1er classeur :

Dim XLApp As Classe1

Private Sub Workbook_Open()
Set XLApp = New Classe1
Set XLApp.App = Application
End Sub

En espérant que ça t'aide,

Croquignol

Avatar
John Fuss
Merci bcp je vais tester

John

"Croquignol" a écrit dans le message de
news:

Bonjour,


Bonjour, j'ai un fichier Excel qui en ouvre un autre, est-il possible de
désactuiver les macros du fichier ouvert ??


Si tu veux simplement désactiver sa procédure Workbook_Open :

Application.EnableEvents = False
Workbooks.Open("C:MonClasseur.xls")
Application.EnableEvents = True

(remplace "MonClasseur.xls" par le classeur dont tu veux désactiver les
macros)

Si tu veux désactiver la totalité de ses macros :

- Insère un module de classe ("Classe1") dans le 1er classeur et copie les
lignes suivantes :

Public WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
On Error Resume Next
If Wb Is Workbooks("MonClasseur.xls") Then _
CommandBars.FindControl(ID:05).Execute
End Sub

- Dans le module ThisWorkbook du 1er classeur :

Dim XLApp As Classe1

Private Sub Workbook_Open()
Set XLApp = New Classe1
Set XLApp.App = Application
End Sub

En espérant que ça t'aide,

Croquignol