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 :

Activation des Macros évènementielles [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut Activation des Macros évènementielles
    Bonsoir,
    Depuis qq jours, quand j'écrits une macro évènemetielles, je dois fermer et rouvrir excel pour qu'elle soit active.
    Voyez-vous ce que je peux faire pourqu'elle soit active tout de suite ?

    Autre question liée.
    Aujourd'hui, j'en ai écrite une pour une mise en forme des données, mais si l'utilisateur fait un copier / coller des données, il n'y a aucun évènement, donc aucune mise en forme.
    Avez-vous des idées pour que mes formats soient pris en compte ? (je ne veux pas empêcher les copier coller)
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour

    question 1 : tu as pas de procédure qui désactive les évènements à tout hasard ?

    question 2 : on peut voir la procédure ?

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonsoir Joe,
    Merci de me répondre.
    question 1 : tu as pas de procédure qui désactive les évènements à tout hasard ?
    A quoi cela ressemble t'il ?
    question 2 : on peut voir la procédure ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Derlg As Integer
    Derlg = Range("A" & Rows.Count).End(xlUp).Row 'Range("A1:A10")
         If Not Intersect(Target, Range("A4:A" & Derlg)) Is Nothing Then Target = Application.WorksheetFunction.Proper(Target)
         If Not Intersect(Target, Range("B4:B" & Derlg)) Is Nothing Then Target = UCase(Target)
         If Not Intersect(Target, Range("C4:C" & Derlg)) Is Nothing Then Target = LCase(Left(Target, 1)) & Right(Target, Len(Target) - 1)
         If Not Intersect(Target, Range("E4:E" & Derlg)) Is Nothing Then Target = UCase(Target)
     End Sub
    je me disais que je pourrais faire une routine qui sélectionnerait chaque cellule de la plage (A4:E Derlg) et qui ferait "Enter".
    mais je ne sais pas faire...

    Merci de ton aide

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    L'instruction qui active/désactive les évènements est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents
    concernant ton problème de copier coller, je n'ai pas de solution évidente qui me passe par la tête

    à moins de court-circuiter l'action du coller et d'écrire toi-même la procédure de collage ... mais c'est compliqué à faire sans générer des problèmes y résultant ...
    regarde dans l'aide au sujet de la méthode "OnKey" de l'application

  5. #5
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Joe,
    Merci pour ta réponse. j'ai effectivement trouvé 2 Application.EnableEvents sur False dans les macros du Personal.xlsb (qui n'est pas toujours actif, ce qui peut expliquer le "ça marchait avant") et un dans le projet en cours ; j'ai donc mis Application.EnableEvents sur true partout avant End Sub.
    Je vais relancer ma machine et faire des tests.
    Je te tiens informé

    Par contre ça va me permettre de "jouer" avec cet propriété dans un autre projet ; ça va me faire gagner bcp de temps. j'avais jamais bien compris comment l'utiliser, maintenant, grace à toi, je "vois" mieux. Merci beaucoup.

    En ce qui concerne le 2ème point, les sendkeys F2 et Entrée ne fonctionnant pas, j'ai écrit une procédure qui remet en forme toutes les colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub Mise_Format()
    Dim Cel As Range
    Dim Plg, Plg1, Plg2, Plg3, Plg4 As Range
    Set Plg1 = Union(Range("TbStg[Nom]"), Range("TbAT[AT nom]"), Range("TbAll[AT nom]"), Range("tbstg[Dir]"))
    For Each Cel In Plg1
        Cel = UCase(Cel)   'Format : tout en majuscule
    Next Cel
    Set Plg2 = Union(Range("TbStg[Prénom]"), Range("TbAT[AT prénom]"), Range("TbAll[AT prénom]"))
    For Each Cel In Plg2
        Cel = Application.WorksheetFunction.Proper(Cel)   'Format : 1er caractère de tous les mots en majuscule
    Next Cel
    Set Plg3 = Union(Range("TbStg[N° d''agent]"), Range("TbAT[AT user]"), Range("TbAll[AT user]"))
    For Each Cel In Plg3
    '    Format :  1er caractère en majuscule
        Cel = UCase(Left(Cel, 1)) & Right(Cel, Len(Cel) - 1)
    Next Cel
    Set Plg = Union(Plg1, Plg2, Plg3)
    'Pour faire les tests, je mets tout en minuscule
    'For Each Cel In Plg
    '    Cel = LCase(Cel)
    'Next Cel
    End Sub
    Ainsi tout est permis, la saisie ou le copier coller.
    Merci

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

Discussions similaires

  1. [E-07] Activation des macros
    Par Alvaten dans le forum Excel
    Réponses: 6
    Dernier message: 18/05/2008, 17h03
  2. message d'activation des macros avec Excel 2007
    Par moilou2 dans le forum Excel
    Réponses: 2
    Dernier message: 05/05/2008, 14h40
  3. Activation des macros sur application avec Runtime
    Par nicolas2603 dans le forum Runtime
    Réponses: 5
    Dernier message: 29/02/2008, 16h41
  4. Tester l'activation des macros
    Par stigma dans le forum Excel
    Réponses: 2
    Dernier message: 11/04/2007, 08h36
  5. Activation des macros sous Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2005, 11h44

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