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 :

Ajouter un code au module d'une feuille [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é Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut Ajouter un code au module d'une feuille
    Bonsoir,

    Lors de la création d'une feuille par macro, je souhaiterais que le module de celle-ci intègre un code. Pour ce faire, j'ai procédé de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim code As String
     
    code = "Private Sub Worksheet_Change(ByVal target As Range)" & vbCrLf & _
    "If target = ActiveSheet.Cells(10, 7) Then" & vbCrLf & _
    "ActiveSheet.Cells(10, 7).Select" & vbCrLf & _
    "Selection.Font.Color = -16752384" & vbCrLf & _
    "End If" & vbCrLf & _
    "End Sub"
     
    ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule.AddFromString code
    Malheureusement, à l'exécution de la macro, ça ne passe pas au niveau de la dernière ligne... Comment faut-il s'y prendre ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans vouloir donner mon avis sur un dossier que je ne connais pas.
    Sais-tu qu'il y a une procédure évènementielle Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) dans l'objet ThisWorkbook qui permet d'intercepter le nom de la feuille (sh) où a eu lieu le changement et qu'il serait peut-être plus simple de chercher une solution de ce côté là.
    Par exemple prévoir une feuille paramètre où tu placerais dans une plage le nom des feuilles où l'événement doit être intercepté et que tu remplirais au fur et à mesure de la création de feuille.
    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

  3. #3
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Bonjour corona,

    Merci de me rappeler l'existence de cet évènement, je ne m'en souvenais plus.

    Seulement, un léger problème se pose. A la création de la feuille en question, l'évènement se déclence à chaque modification de cellule (ce qui est normal au vu de cet évènement). Or, je souhaiterais que cela se fasse uniquement pour des changements effectués après création de la feuille, et non en cours de création.

    Cela est-il faisable ?

    Edit : en fait, il faudrait que je puisse exprimer en VBA "si telle procédure est terminée (sous entendu la génération de la feuille) alors.." Mais je ne vois pas comment...

    Merci.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Edit : en fait, il faudrait que je puisse exprimer en VBA "si telle procédure est terminée (sous entendu la génération de la feuille) alors.." Mais je ne vois pas comment...
    Tu peux utiliser la méthode du "Flag".

    au début de la création de ta feuille tu alimentes une cellule non utilisée d'une certaine donnée (par exemple 1).
    Tu testeras si cette donnée est présente au début de l’évènement "Workbook_SheetChange" et si donnée présente alors on sort de l’évènement.
    Ne pas oublier de remettre à blanc la cellule à la fin de la création

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois du côte de la propriété EnbleEvents de l'objet Application qui est destinée à ce genre de problème.

    vois l'aide VBA à
    Référence du développeur Excel
    1. Application.EnableEvents, propriété
    2. Utilisation d'événements avec des objets Excel
    cordialement,

    Didier

  6. #6
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Merci à vous deux pour vos idées !

    La méthode du "Flag" est bien pensée, je devrais pouvoir m'en sortir ainsi.

    Concernant la propriété EnableEvents, je ne vois pas trop comment l'utiliser. Est-ce uné méthode pour résoudre mon premer problème, à savoir le fait de pouvoir insérer du code dans le module d'une feuille lors de sa création ?

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

Discussions similaires

  1. Utilisation du code Ascii pour quitter une feuille.
    Par ALUSIP Dranreb dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/04/2011, 17h11
  2. [AC-2003] Comment exporter un module dans une feuille Excel?
    Par SunRay dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2009, 16h23
  3. [XL-2003] copier en automatique le code d'un module d'une feuille EXCEL vers une autre feuille
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2009, 00h13
  4. code pour faire imprimer une feuille imprimer
    Par thechef dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/02/2009, 20h43
  5. Ajout dynamique d'un lien vers une feuille de style.
    Par maa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2007, 21h42

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