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 :

copie de module par code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut copie de module par code
    Bonjour a tous

    J'aimerais savoir comment copier un module en code ^^
    en gros je veux que quand j'appuie sur un bouton il me copie un module du 1er classeur dans le 2eme classeur

    Cordialement

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2013
    Messages : 27
    Par défaut
    Quelque chose du genre


    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
    Dim LigDeb      As Long
    Dim NbLig       As Long
     
    Dim stCode      As String
     
    Dim vbNew     As Workbook
    Dim objF        As Object
     
    Set vbNew=Workbook("AutreClasseur.xlsx")
    Set objF = ThisWorkbook.VBProject.VBComponents("MonModuleSource")
    stCode = objF.CodeModule.Lines(LigDeb, NbLig)
     
    Set objF = wbNew.VBProject.VBComponents("MonModuleCible")
     
    objF.CodeModule.addfromstring (stCode)

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La macro suivante copie le module "Module 1" du classeur actif et l'importe dans le classeur contenant la macro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CopieModule()
        ' suppression d'un fichier d'export
        On Error Resume Next
        Kill "C:\temp\export.bas"
        On Error GoTo 0
        ' Export Module 1
        ActiveWorkbook.VBProject.VBComponents("module1").Export "C:\temp\export.bas"
        ' Import Module 1 dans thisworkbook
        Set Var = Application.VBE.ActiveVBProject.VBComponents
        Application.VBE.ActiveVBProject.VBComponents.Import "C:\temp\export.bas"
        Kill "C:\temp\export.bas"
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Libesa, merci pour ton aide, mais malheureusement ce que tu m'as donné ne fonctionne pas

    Pour Daniel.C Je suis désolé je ne comprend pas ton explication

    En gros cette macro copie le module1 du classeur actif, et l'importe dans la classeur contenant la macro => donc je dois mettre cette macro dans la classeur ou je veux que le module soit mis ??

    Moi il me faudrait l'inverse, que je mette la macro dans le classeur ou je veux prendre le module, pour l'implanter dans un autre classeur (qui est ouvert)

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Eh bien, fais l'inverse !

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Daniel.C

    Je ne comprend pas ce que signifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Kill "C:\temp\export.bas"
    Ni ce que se fichier fait la, car moi je ne l'ai pas la ^^'

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2013
    Messages : 27
    Par défaut
    Citation Envoyé par sharox Voir le message
    Libesa, merci pour ton aide, mais malheureusement ce que tu m'as donné ne fonctionne pas
    A une petite faute de frappe près (vbNew est devenu wbNew quelques lignes plus bas) cela fonctionne chez moi.

    As tu remplacé les noms bidons que j'ai mis pour l'exemple et les variables LigDeb et NbLig par les valeurs de ton programme?

    As tu activé la référence adequate (Microsoft Visual Basic for Applications Extensibility je crois) ?

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Bon j'ai l'impression qu'il y a un problème
    Donc on va le chercher..

    Déjà je suis sous Excel 2003 (Windows 7)
    pour la référence j'ai : Microsoft Visual Basic for Applications Extensibility 5.3

    Ensuite dans le programme que j'ai commenté, a toi de me dire ou est-ce que je me suis trompé ^^ Je vois très rarement mes erreur, mais c'est rattrapé par le fait que quand on m'en montre une je ne dénie pas l'avoir faite.

    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
    Sub test_import()
    ' Déclaration des variables
    Dim LigDeb As Long
    Dim NbLig As Long
    Dim stCode As String
    Dim vbNew As Workbook
    Dim objF As Object
     ' ici, je dois mettre le nom du classeur dans le quel je veux importer
    Set vbNew = Workbooks ("classeur2 .xls")
    ' ici, je dois mettre le nom du module a exporter
    Set objF = ThisWorkbook.VBProject.VBComponents("Module_export")
    ' ici, je dois mettre les lignes que je veux exporter dans ce module (pas sûr)
    stCode = objF.CodeModule.Lines(1, 402)
    ' ici, je dois mettre le nom du module dans le quel je dois intégré ces lignes
    Set objF = vbNew.VBProject.VBComponents("Moule_import")
    ' ici, je ne sais pas, peut être que l'ajout est de mode code 
    objF.CodeModule.addfromstring (stCode)
     
    End Sub
    (tu as oublié un "s" )
    Set vbNew=Workbook("AutreClasseur.xlsx")
    deviens
    Set vbNew=Workbooks("AutreClasseur.xlsx")
    enfin je pense

    Et il me met toujours une erreur après cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objF = ThisWorkbook.VBProject.VBComponents("Module_export")
    sois disant, la méthode 'VBProject' de l'objet '_Workbook' a échoué


    Cordialement

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

Discussions similaires

  1. copie de module par code
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2013, 10h25
  2. [D2009][Win7]Installation de police ttf par code de copie
    Par istam3 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/11/2010, 14h13
  3. [Source]Supprimer par code des lignes de codes ou un Module
    Par mortalino dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/01/2007, 16h37
  4. [VCL] Scroller un contrôle par code
    Par sbeu dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/03/2004, 10h39
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

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