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 :

Impossible d'écrire du code dans ThisWorkbook depuis une macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut Impossible d'écrire du code dans ThisWorkbook depuis une macro
    Bonjour,

    Je voudrais écrire du code dans un classeur B que je créé à partir d'une macro dans un classeur A dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Classeur_Historique_User As Workbook
    Set Classeur_Historique_User = Workbooks.Add   
    Set VBComp = Classeur_Historique_User.VBProject.VBComponents("ThisWorkbook").CodeModule
    code_string = "Sub Fermeture_Classeur_Historique()" & Chr(10) & "ActiveWorkbook.Close False" & Chr(10) & "End Sub"
    VBComp.AddFromString code_string
    Le code ne plante pas mais rien ne s'écrit.
    J'ai bien activé la référence VB for application extensibility 5.3.

    Des idées?

    D'avance merci.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ces lignes de codes me semblent correctes et n'expliquent pas ton problème qui doit se situer ailleurs.
    D'ailleurs, pourquoi écrire cette procédure dans Thisworkbook plutôt qu'un module standard ?

    Il faudrait nous montrer le code complet de la procédure.
    Ça tombe sous le sens mais .... si tu enregistres ton fichier ensuite, c'est bien en xlsm et pas xlsx hein ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Merci pour la réponse.
    J'ai essayé d'écrire dans un module standard mais ça ne marchait pas non plus. Je me suis dit que l'ajout d'un nouveau module était peut-être à l'origine de l'anomalie d'où l'écriture du code dans ThisWorkbook.
    En revanche, le classeur B est au format "xlsx".
    J'ai résolu le problème qui semblait venir de l'accès approuvé au modèle d'objet du projet VBA qui n'était pas coché.

    Il ne me reste plus qu'à savoir comment (si c'est possible) activer ce paramètre par macro.

    Je passe en résolu malgré tout.

    Encore merci et bon après-midi.

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    regarde si j'avais proposé un truc qui fonctionne ici : https://www.developpez.net/forums/d1...e/#post8263664

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    C'est gentil.
    Je vais essayer. J'avais déjà trouvé des solutions utilisant l'envoi de touche mais sans succès.
    Je vous tiens au courant et copie-collerai la solution ici si elle s'avère concluante.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Enorme, ta solution (cf. ci-dessous) fonctionne parfaitement:

    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
    Sub Test()
     
    ' si l'accès au projet n'est pas approuvé
    ' la récupération de la version va planter !
    On Error GoTo CocheCase
    bidon = Application.VBE.Version
    Exit Sub
     
     
    ' si ça plante, on simule l'activation
    CocheCase:
     
    SendKeys "%v"
    SendKeys "{ENTER}"
    Application.CommandBars.ExecuteMso "MacroSecurity"
    Encore merci mille fois!

    En revanche, cela remet fortement en question le discours (très logique au demeurant) lu sur ce forum qui dit que "s'il y a une sécurité implémentée, c'est justement pour qu'elle ne puisse être bypassée de façon automatique".

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    C'est en partie vrai et en partie faux.

    On peut cocher cette case automatiquement... à condition d'avoir activé les macros au préalable.

    Mais bon ... côté sécurité Excel n'est pas une merveille, ce n'est pas sa vocation, contrairement à Outlook où certaines choses sont un peu plus complexes à Bypasser

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

Discussions similaires

  1. créer un évenement dans ThisWorkbook par une macro
    Par jmcrib dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/09/2007, 11h56
  2. comment lancer du code depuis une macro ?
    Par faiglon dans le forum Access
    Réponses: 15
    Dernier message: 13/07/2006, 11h03
  3. Impossible de mettre du code dans <HEAD>
    Par sunshine33 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 02/06/2006, 11h31
  4. [VBA Excel] Comment écrire un code dans le ThisWorkBook ?
    Par WebPac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2005, 15h03

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