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 :

Insertion de macro


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 babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut Insertion de macro
    Bonjour amis du forum
    J'ai deux questions.
    Est-il possible, par macro, d'insérer une macro dans un fichier Excel vierge.

    Merci de vos solutions à mes problèmes

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Une piste qui copie le Module1 du classeur contenant le programme dans un nouveau classeur vierge.

    1) Copiez le code suivant dans un module standard (Module1). C'est ce module qui sera exporté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub toto()
    MsgBox "Bonjour de Toto"
    End Sub
    2) Copiez le code suivant dans un nouveau module (AUTRE que le Module1)

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    ''Library VBIDE
    ''C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
    ''Microsoft Visual Basic for Applications Extensibility 5.3
     
    '### Constantes à adapter ###
    Const CHEMIN As String = "C:\"
    Const NOUVEAU_FICHIER As String = "Vierge"
    Const TEMPORAIRE As String = "C:\___tempo.bas"
    Const MODULE_A_EXPORTER As String = "Module1"
    '############################
     
    Sub ExportModule()
    Dim VBP As Object 'VBIDE.VBProject
    Dim OBJ As Workbook
    Dim WB As Workbook
    Dim A$
    Dim B$
    Dim i&
    On Error GoTo Erreur
    Application.ScreenUpdating = False
    Application.VBE.ActiveVBProject.VBComponents(MODULE_A_EXPORTER).Export (TEMPORAIRE)
    Set OBJ = CreateObject("Excel.sheet")
    Set WB = OBJ
    A$ = NOUVEAU_FICHIER
    B$ = A$
    Do
      B$ = Dir(CHEMIN & B$ & ".xls")
      If B$ <> vbNullString Then
        i& = i& + 1
        B$ = NOUVEAU_FICHIER & i&
        A$ = B$
      Else
        WB.Windows(1).Caption = A$ & ".xls"
        WB.SaveAs CHEMIN & A$ & ".xls"
        Exit Do
      End If
    Loop
    Set WB = Nothing
    Set OBJ = Nothing
    Set WB = GetObject(CHEMIN & A$ & ".xls")
    WB.Windows(1).Visible = True
    i& = 0
    For Each VBP In Application.VBE.VBProjects
      i& = i& + 1
      If VBP.Filename = CHEMIN & A$ & ".xls" Then
        Application.VBE.VBProjects(i&).VBComponents.Import (TEMPORAIRE)
        WB.Save
        WB.Close
        Exit For
      End If
    Next VBP
    Erreur:
    On Error Resume Next
    Set WB = Nothing
    Call Kill(TEMPORAIRE)
    Application.ScreenUpdating = True
    End Sub
    Lancez la macro ExportModule qui va créer, dans C:\, un nouveau classeur nommé "vierge.xls" (ou "viergeX.xls" si déjà existant)
    et y exporter le Module1 contenant la macro "toto".

    Cordialement.

    PMO
    Patrick Morange

  3. #3
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Merci de ta réponse, mais ce code ne fonctionne pas chez moi(excel2003)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un peu de lecture : http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Philippe

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    J'ai oublié de préciser une chose IMPORTANTE.

    Dans Excel, faites menu Outils/Macro/Sécurité... onglet Editeurs approuvés
    et cochez la case d'option "Faire confiance au projet Visual Basic" puis cliquez OK.

    Sans cela, le programme ne fonctionne pas.

    Cordialement.

    PMO
    Patrick Morange

  6. #6
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Merci à vous, c'est très instructif, mais ca plante toujours :

    Erreur '50035'

    La méthode 'Export de l'objet '_VBComponent' a échoué

    Quelle est la référence VBA project que j'aurais oublié ?

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

Discussions similaires

  1. [XL-2003] ROWS.INSERT probléme macro plante
    Par pierre246 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/06/2015, 15h08
  2. Insertion image - macro
    Par msrtn dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/02/2011, 10h09
  3. [Excel] Insertion de formule dans ma feuille par macro (erreur400)
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2007, 10h27
  4. [VBA-E] Macro Insertion image
    Par dafalri dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 17h20
  5. plantage macro avec requete type insert
    Par zephyr59 dans le forum Access
    Réponses: 4
    Dernier message: 06/04/2006, 00h34

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