IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Traiter un évènement lié à une feuille en dehors d'une feuille ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Traiter un évènement lié à une feuille en dehors d'une feuille ?
    Bonjour,

    J'aurais une petite question.

    Dans un de mes projet j'ai un formulaire qui doit récupere les coordonnées de la cellule active automatiquement dès qu'on la déplace.

    Facile vous allez me dire on a l'évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Mon problème est que cet évènement est lié à une feuille précise d'un classeur précis. Or pour mon projet il est important que la macro fonctionne quelque soit le classeur ouvert. (Ma macro étant dans mon dossier XLSTART).
    Je voudrais donc savoir s'il y a moyen de réaliser ce genre de chose.

    Je me doute bien que certains d'entre vous vont être tenté de me répondre, c'est impossible, c'est un évènement de feuille, on ne peut utiliser une évènement de feuille que dans une feuille, ....

    Là ce qui m’intéresserai c'est plutôt d'avoir des réponses de gens qui ont été confrontés au problème et qui ont des pistes intéressantes.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Peux-tu expliquer un peu plus ?
    De ce que je comprends,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activeworkbook.Activesheet.Activecell
    devrait te donner la cellule active de la feuille active du classeur actif...
    MPi²

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    c'est un évènement de feuille, on ne peut utiliser une évènement de feuille que dans une feuille, ....
    Ce n'est pas tout à fait exact. Il est possible d'intercepter l'événement SelectionChange qui se déroule dans n'importe qu'elle feuille d'un classeur avec l'événement Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)sh représente l'objet feuille où s'est déroulé l'événement et Target la cellule.

    Par contre je n'ai pas d'expérience pour un événement qui aurait lieu sur un classeur ouvert depuis le classeur xlStart ou même depuis un classeur xlam mais j'imagine que cela doit être possible avec WithEvents.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    @Parmi. Alors recupérer la position de la cellule active, ça va je sais faire, ce n'est d'ailleurs pas l'objet de ma question

    @Philippe Tulliez : Alors oui effectivement il y a un évènement prévu dans le classeur. Je l'avais zappé et ca marche très bien tant qu'on reste dans le classeur.
    Si on sort du classeur, ca ne marche plus.
    Quelqu'un m'a orienté vers les modules de classes et l'excellent tuto présent ici.

    Par contre j'ai tout suivi. Mais je ne m'en sort pas n'y entendant pas encore grand chose.

    (Pour mon test j'ai fait simple, chaque fois que je bouge le curseur, j'affiche un msgbox.)

    J'ai donc tout fait comme dans la doc, j'ai créé un module de classe et j'y ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Option Explicit
        Private WithEvents xlApp As Application
     
        Private Sub xlApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
         MsgBox "Ca devrait marcher"
        End Sub
     
        Private Sub Class_Initialize()
           Set xlApp = Application
        End Sub
    Ensuite j'ai créé un module standard dans lequel j'ai mis le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Option Explicit
        Dim ThisApplication As AppEvents
     
        Public Sub Activer_Evenements_Application()
           Set ThisApplication = New AppEvents
        End Sub
    Lorsque je lance la macro Activer_Evenement_Application j'ai l'erreur suivante qui apparait :

    Erreur de compilation : Utilisation incorrecte du mot clé New....

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bon j'avais juste oublié d’appeler mon module de classe AppEvents

    Du coup ca marche mieux comme ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2017, 17h38
  2. [XL-2010] Copier une plage de données de plusieurs feuilles et centraliser sur une seule
    Par Tanga dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/10/2015, 15h44
  3. Réponses: 2
    Dernier message: 13/09/2015, 15h54
  4. [MooTools] Exécuter une fonction au dehors d'une méthode
    Par drick35 dans le forum Bibliothèques & Frameworks
    Réponses: 11
    Dernier message: 07/12/2012, 15h43
  5. Réponses: 1
    Dernier message: 11/02/2009, 06h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo