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 une macro par macro sans activer de référence? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut Ajouter une macro par macro sans activer de référence?
    Bonjour,

    Est-ce que je peux ajouter du code vba dans un ficher par macro sans devoir activer de référence?

    Contexte:
    J'ai un fichier (avec macros) qui est distribué a des end user (chacun leur version du fichier).
    Bien sur, régulierement, ils font des bétises avec et leur version ne marche plus.

    J'ai donc un second fichier de "réparation" qui contient des macros qui corrigent les probleme habituels et que j'enrichit au fur et a mesure qu'ils innovent avec des nouveaux problemes (ils n'ont plus qu'a cliquer sur le bouton "réparer" et a sauver le fichier qui refonctionne)

    Ce matin, on m'en a trouvé un nouveau. Le fichier avait été sauvé en .xlsx (au lieu de rester sagement en .xlsm) et donc les macros avaient disparu.

    J'aimerai ajouter la résolution du probleme a mon fichier de réparation mais ca demande de savoir ajouter du vba par macro.
    J'ai vu que c'était possible, mais les solutions que je trouve me demandent d'activer des références. Références qui seront a coup sur désactivées chez mes utilisateurs finaux.

    Est-ce que je peux le faire sans référence?

    Merci d'avance,

    Emmanuelle

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, même si je pense que tu déjà regardé, voir ici et

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Par défaut
    Bonjour EmmanuelleC le forum
    oui je pense que tu n'auras aucun problème, car tu les utilisateurs ont déjà tous des fichiers qui tournent avec des macros, donc les références nécessaires sont déjà là est cochées donc à mon sens pas de soucis sauf dans la rédaction car là c'est pas tout simple à faire mais cela marche normalement sans trop de soucis , bon week-end
    a+
    papou

    EDIT: bonjour Kiki

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    Bonjour Kiki, bonjour Paritec

    Oui Kiki, c'est de la que je viens


    Paritec, le tutoriel précise
    La majeur partie des procédures utilisées nécessite d'activer la référence Microsoft Visual Basic for Applications Extensibility 5.3.
    Et de base elle n'était pas activée sur mon pc.

    Je suis a peu pres sure qu'elle ne sera pas activée non plus sur le pc des end user

    Autre soucis, en voulant tester le code du tuto, je me rend compte qu'il faut aussi cocher "Trust access to the VBA project object model" dans le trust center pour que le code fonctionne
    Ca non plus ca ne sera pas fait par défaut chez les end user

    Le code en lui meme, en s'aidant du tuto, n'est ni tres long ni tres dur a écrire

    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
    23
    24
    25
    26
    27
    Sub refaire_macro()
        Dim Wb As Workbook
        Dim VBComp As VBComponent
        Dim X As Integer
     
        'Définit le classeur cible
        Set Wb = Workbooks("book1.xlsm")
     
        'Définir ou on va mettre le code
        Set VBComp = Wb.VBProject.VBComponents("ThisWorkbook")
     
     
        'Ajoute une macro dedans
        With VBComp.CodeModule
            X = .CountOfLines
            .InsertLines X + 1, "Option Explicit"
            .InsertLines X + 2, "Dim i As Integer"
            .InsertLines X + 3, "Private Sub Workbook_Open()"
            .InsertLines X + 4, "For i = 1 To 12"
            .InsertLines X + 5, "    If Sheets(i).Cells(1, 11) = ""non"" Then"
            .InsertLines X + 6, "        Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, userInterfaceOnly:=True"
            .InsertLines X + 7, "        Sheets(i).EnableOutlining = True"
            .InsertLines X + 8, "    End If"
            .InsertLines X + 9, "Next i"
            .InsertLines X + 10, "End Sub"
        End With
    End Sub
    Ca marche, mais ca demande
    - la référence Microsoft Visual Basic for Applications Extensibility 5.3
    - d'avoir coché la case dans le trust center

    et mes end user n'ont pas ca

    D'ou ma question initiale, est-ce qu'il y a une autre facon d'y arriver sans la référence?

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    Il y a la possibilité d'activer une référence par vba, il me semble je crois même que tu as cela dans la faq.
    C'est d'ailleurs un sujet que j'ai déjà vu sur le forum pour activer une référence dans un xla (complementaire).


    Tu devrais faire une macro supplémentaire dans ton fichier (solveur) qui active cette référence.

    Une piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub workbook_open()
    application.displayalerts=false
     References.AddFromFile "C:\ProgramFiles\Fichierscommuns\MicrosoftShared\VBA\VBA6\VBE6EXT.OLB")
    workbook.save
    application.displayalerts=true
     end sub
    En cherchant bien tu trouveras.

    Au plaisir.
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    J'ai vu
    Mais quand j'ai regardé dans ce sens, je suis tombée sur deux soucis
    - j'ai besoin de la case "Trust access to the VBA project object model" pour activer une référence
    - La référence n'est pas toujours au meme endroit (ca dépend au minimum de la langue, de la version de windows/office)

    "C:\ProgramFiles\Fichierscommuns\MicrosoftShared\VBA\VBA6\VBE6EXT.OLB"
    "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"

    Je présume qu'il doit etre possible de venir a bout du secon probleme, mais la case a cocher me semble plus genante

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par EmmanuelleC Voir le message
    - j'ai besoin de la case "Trust access to the VBA project object model" pour activer une référence
    Bonjour,
    C'est une sécurité qui n'est paramétrable dans le centre de gestion de la confidentialité que manuellement, sinon ce ne serait plus une sécurité...

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

Discussions similaires

  1. [XL-2003] Ouvrir par macro un document sans activer les macros de ce dernier
    Par JM741 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/08/2012, 15h10
  2. Ajouter une ligne par une macro
    Par scoubi10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2010, 11h58
  3. Réponses: 6
    Dernier message: 28/05/2007, 16h52
  4. Réponses: 4
    Dernier message: 23/12/2006, 16h55
  5. Formulaire bloqué lors d'une ouverture par macro.
    Par Monsieur Peck dans le forum IHM
    Réponses: 6
    Dernier message: 16/06/2006, 17h41

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