1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 218
    Points : 97
    Points
    97

    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
    4 447
    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 : 4 447
    Points : 8 490
    Points
    8 490
    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 régulier
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 218
    Points : 97
    Points
    97

    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
    4 447
    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 : 4 447
    Points : 8 490
    Points
    8 490
    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 régulier
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 218
    Points : 97
    Points
    97

    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 régulier
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 218
    Points : 97
    Points
    97

    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
    4 447
    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 : 4 447
    Points : 8 490
    Points
    8 490
    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, 12h56
  2. comment lancer du code depuis une macro ?
    Par faiglon dans le forum Access
    Réponses: 15
    Dernier message: 13/07/2006, 12h03
  3. Impossible de mettre du code dans <HEAD>
    Par sunshine33 dans le forum JavaScript
    Réponses: 17
    Dernier message: 02/06/2006, 12h31
  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, 16h03

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