macro utilisable pour tous fichiers excel - résolu

  • Initiateur de la discussion Initiateur de la discussion sigma
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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,
 
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.
 
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😀16]
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour