OVH Cloud OVH Cloud

Déactiver/Réactiver

2 réponses
Avatar
John
Bonjour,

Avant d'ouvir un fichier excel , je veux désactiver toutes les macro
complémentaires que l'utilisateur à définit dans son application excel.
Jusque là pas de problème, grâce à une réponse reçue ici, je parcours la
liste des AddIns et je les mets à "false".
Mon problème réside à la fermeture du fichier ... j'aimerai restaurer les
macros que j'ai désactivées à l'ouverture. Je veux que cela reste
transparent pour l'utilisateur.

Merci de vos réponses

2 réponses

Avatar
Hervé
Salut John,
Utilise des variables publiques (déclarées dans un module standard) pour
stocker le nom de la macro afin de la réactiver à la fermeture ou au
changement de classeur.
'-----------------------
Option Explicit

'Variable tableau déclarée publique
Public TblAddins() As AddIn

'Macro à appeler à l'ouverture du classeur
Sub Desactiver()
Dim I As Integer, J As Integer
With Application
For I = 1 To .AddIns.Count
If .AddIns(I).Installed Then
J = J + 1
ReDim Preserve TblAddins(1 To J)
Set TblAddins(J) = .AddIns(I)
End If
Next I
End With
End Sub

'Macro à appeler à la fermeture du classeur
Sub Activer()
Dim I As Integer
'si aucune installée
On Error Resume Next
For I = 1 To UBound(TblAddins)
TblAddins(I).Installed = True
Next I
End Sub
'-------------------------

Hervé.

"John" a écrit dans le message news:

Bonjour,

Avant d'ouvir un fichier excel , je veux désactiver toutes les macro
complémentaires que l'utilisateur à définit dans son application excel.
Jusque là pas de problème, grâce à une réponse reçue ici, je parcours la
liste des AddIns et je les mets à "false".
Mon problème réside à la fermeture du fichier ... j'aimerai restaurer les
macros que j'ai désactivées à l'ouverture. Je veux que cela reste
transparent pour l'utilisateur.

Merci de vos réponses




Avatar
Hervé
Oups,
Dans la proc "Desactiver" j'ai justement oublié de désactiver :

Sub Desactiver()
Dim I As Integer, J As Integer
With Application
For I = 1 To .AddIns.Count
If .AddIns(I).Installed Then
J = J + 1
ReDim Preserve TblAddins(1 To J)
Set TblAddins(J) = .AddIns(I)
.AddIns(I).Installed = False
End If
Next I
End With
End Sub

Hervé.

"Hervé" a écrit dans le message news:

Salut John,
Utilise des variables publiques (déclarées dans un module standard) pour
stocker le nom de la macro afin de la réactiver à la fermeture ou au
changement de classeur.
'-----------------------
Option Explicit

'Variable tableau déclarée publique
Public TblAddins() As AddIn

'Macro à appeler à l'ouverture du classeur
Sub Desactiver()
Dim I As Integer, J As Integer
With Application
For I = 1 To .AddIns.Count
If .AddIns(I).Installed Then
J = J + 1
ReDim Preserve TblAddins(1 To J)
Set TblAddins(J) = .AddIns(I)
End If
Next I
End With
End Sub

'Macro à appeler à la fermeture du classeur
Sub Activer()
Dim I As Integer
'si aucune installée
On Error Resume Next
For I = 1 To UBound(TblAddins)
TblAddins(I).Installed = True
Next I
End Sub
'-------------------------

Hervé.

"John" a écrit dans le message news:

Bonjour,

Avant d'ouvir un fichier excel , je veux désactiver toutes les macro
complémentaires que l'utilisateur à définit dans son application excel.
Jusque là pas de problème, grâce à une réponse reçue ici, je parcours la
liste des AddIns et je les mets à "false".
Mon problème réside à la fermeture du fichier ... j'aimerai restaurer
les


macros que j'ai désactivées à l'ouverture. Je veux que cela reste
transparent pour l'utilisateur.

Merci de vos réponses