macro utilisable pour tous fichiers excel - résolu

sigma

XLDnaute Occasionnel
Bonjour à tous,
J'ai trouvé une partie des réponses à mes questions en cherchant dans les archives mais il me manque encore une information aussi, je vous sollicite.

je cherche à ce qu'une macro soit utilisable par défaut dans tous les classeurs ouverts, pour cela j'ai crée une macro (dans un module) dans un classeur personnel que j'appelle à partir d'un bouton sur mon ruban à partir de n'importe quel fichier excel; jusqu'ici pas de prb.
je souhaiterai désormais faire la même chose mais avec une macro qui fonctionnerai avec "Private Sub Worksheet_Change(ByVal Target As Range)" donc non enregistrée dans un module et que je n'arrive donc pas à appeler... quel est la solution pour que cette macro (réalisée par monsieur boisgontier que je remercie par ailleurs) puisse fonctionner par défaut sur tous les classeurs sans m'obliger à une action particulière d'appui sur un bouton ou de raccourci clavier ?

merci de votre aide.
cordialement,
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne vois vraiment pas ce que ça pourrait être d'autre que l'absence de la déclaration globale en tête
Private WithEvents AppExc As Application
Alors si elle y est bien, joignez le classeur, que je puisse examiner ce qui ne va pas.
 

sigma

XLDnaute Occasionnel
re,
apparemment je ne peux pas joindre le fichier (extension non autorisée).
dans mon personnal.xslb

j'ai, dans mon module :
Option Explicit

Private X As Classe1

Sub LancerStopperX()
If X Is Nothing Then
Set X = New Classe1
Else
Set X = Nothing
End If
End Sub

et dans le module de classe :
Option Explicit

Public WithEvents App As Application

Private Sub Class_Initialize()
Set AppExc = Application
End Sub

Private Sub AppExc_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Champ As Range
Set Champ = Sh.[A2:D16]
If Intersect(Champ, Target) Is Nothing Then Exit Sub
If Target.Rows.Count <> 1 Then Exit Sub
If Target.Columns.Count <> 1 Then Exit Sub
Application.EnableEvents = False
Intersect(Champ, Target.EntireRow).Select
Target.Activate
Application.EnableEvents = True
End Sub

cela peut il vous aider ?
merci
 

Dranreb

XLDnaute Barbatruc
Non, parce qu'à priori rien d'autre ne provoquera l'ouverture du classeur contenant la macro, à part le bouton dans la barre de lancement rapide auquel vous l'aurez affectée.
Si toutefois il s'ouvre quand même pour une raison que j'ignore, vous pouvez exécuter LancerStopperX depuis une Workbook_Open dans le module ThisWorkbook.
Mais il faudra quand même le bouton pour la relancer après une réinitialisation du projet VBA.
 

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 313
Membres
103 175
dernier inscrit
abcc