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

  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é...

  8. #8
    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
    C'est ce que je craignais

    Je vais m'abstenir de leur faire a tous retirer la sécurité pour un probleme qui n'a eu lieu qu'une fois. Et je vais garder en tete que si ca se reproduit, j'ai tout les autres infos dont je pourrais avoir besoin

    Merci beaucoup pour votre aide

  9. #9
    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
    Re, il faudrait passer par SelfCert, mais apparemment tes utilisateurs n'y sont pas préparés

  10. #10
    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 re
    bonjour


    de toute facon si j'ai bien compris

    tu a distribué un fichier qui n'a pas une certaine reference activée

    pourquoi ne recomencerais tu pas ?? mais avec cette reference tout simplement

    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

  11. #11
    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
    Kiki, je dirais qu'actuellement, ils ne sont pas préparer a grand chose, et que c'est un tord.

    Il va bien falloir qu'on se décide a sécuriser ca proprement.

    J'avais commencé a regarder, mais on avait eu un probleme, sur certains pc, au lieu d'avoir la pop up qui demandait si il fallait faire confiance aux macro avec ce certificat, il n'y avait rien comme message et la macro était bloquée. Il faudra que je trouve du temps pour réfléchir a ca

    Si on fait un truc avec un certificat, les macro certifiée pourront tourner meme sans cocher la case? ou meme certifié, il faudra quand meme retirer la sécurité?

    Patrick, si je comprend bien, ca veut dire que la référence est dans le fichier excel et pas dans Excel directement? Que si je la coche dans le fichier, des qu'ils ferment le fichier, ca n'est plus coché?
    Bon a savoir ca
    Restera a trouver une solution pour les emplacements variés

  12. #12
    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 re
    bonjour
    la réponse est oui

    si tu créé un fichier avec certaines références activée

    et que tu ouvre un autre fichier tu verra que les référence ne sont pas activées dans les deux

    et comme si j'ai bien compris tu travaille avec un fichier original (a l'initial)
    tu pourrais tout simplement redistribuer le fichier avec les bonnes références

    afin que tout le monde ai ces références activées dans leur fichier *
    le problème ne devrait plus être

    d'autant plus que j' en ai fait l'expérience j'ai plusieurs ordi qui tourne 12h par jour

    il n'ont pas tous le même système d'exploitation

    par contre les macros qui ajoutent mes complémentaire sont pour tout les postes les même les complémentaire s'installe dans leur dossier respectifs selon les systèmes d'exploitation

    tu n'a qu'a faire l'essai si tu a le temps et la possibilité de le faire sur deux système différents

    ouvre un classeur

    sauve le en "xla" la boite de dialogue s'ouvrira automatiquement sur le dossier concerné que se soit pour xp,vista,seven
    et je suppose que pour les références c'est pareil


    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

  13. #13
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Salut j'avais rencontrer ce type de problème, j'avais créer un onglets admin en fin de classeur qui me permet de parametrer qq éléments de ce genre, j'avais donc une liste de références de "référence" avec ce code que tu peux peut etre adapter et alléger à ta sauce...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Sub Bibli()
    'VERIFIE LES BIBLIOTHEQUES VBA
    Dim x As Integer
    Dim I As Integer
    Dim NbreRef As Integer
     
    'Sélectionne la page stop
    Worksheets("A propos").Activate
     
    NbreRef = ThisWorkbook.VBProject.References.Count
    y = 11
    x = 1
    Set ThisProj = ActiveWorkbook.VBProject
     
    For Each thisref In ThisProj.References
       Cells(x, y) = thisref.Name
       x = x + 1
       Cells(x, y) = thisref.Description
       x = x + 1
       Cells(x, y) = thisref.Guid
       x = x + 1
       Cells(x, y) = thisref.FullPath
     
    'SI PAS PRESENTE
                If thisref.IsBroken = True Then
                    ThisWorkbook.VBProject.References.AddFromFile thisref.FullPath 'ON LA MET
                    MsgBox "La bibliotheque " & thisref.Name & " a été ajoutée"
                    Else
                    MsgBox "Bibliotheque " & thisref.Name & " déja présente"
                End If
     
    y = y + 1
    x = 1
    Next
    End Sub

+ 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