Copier un module VBE ou du texte vers un autre module d'un fichier différent

Anonyme
2020-12-29T10:31:22+00:00

Bonjour,

J'espère que vous pourrez m'aider.

J'aimerais éviter que des personnes qui ne maîtrise pas VBA aient à insérer des codes eux-mêmes.

Le but, j'ai un fichier excel 1 avec soit dans un onglet le texte du code écrit, soit dans un module, la macro écrite.

J'aimerais

  • soit coller le texte de l'onglet du fichier 1 vers un module précis du fichier 2
  • soit copier le module 3 du fichier 1 vers le module 3 du ficher 2

ce code ne fonctionne pas :

Workbooks(fichier).Activate

 Range("F1:F22").Select

 Selection.Copy

 Workbooks(maft).Activate

 ActiveWorkbook.VBProject.VBComponents("Module3").CodeModule.CodePane.Show

 ActiveSheet.Paste

d'avance merci pour votre aide

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

2 réponses

  1. Anonyme
    2020-12-29T13:02:14+00:00

    Merci beaucoup, je vais essayer ce code.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2020-12-29T11:30:27+00:00

    Bonjour,

    Une solution adaptée de stackoverflow.com :

    https://stackoverflow.com/questions/18497527/copy-vba-code-from-a-sheet-in-one-workbook-to-another

    Dans les paramètres des macros, la case "Accès approuvé au modèle de projet VBA" doit être cochée :

    Sub AddProcedureToModule()

      Dim VBProj As Object

      Dim VBComp As Object

      Dim CodeMod As Object

      Dim LineNum As Long

      Workbooks(maft).Activate

      Set VBProj = ActiveWorkbook.VBProject

      Set VBComp = VBProj.VBComponents("Module3")

      Set CodeMod = VBComp.CodeModule

      Workbooks(fichier).Activate

      LineNum = CodeMod.CountOfLines + 1

      LineNum = LineNum + 1

      For i = 1 To 21

          CodeMod.InsertLines LineNum, "    " & Cells(i, 6)

          LineNum = LineNum + 1

      Next i

    End Sub

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire