Attribuer code vba sur un autre fichier

YaGo

XLDnaute Junior
Bonjour à tous,

J'ai un fichier dit 'Maître" et je souhaiterais écrire une procédure VBA sur le fichier "Esclave" à partir du fichier Maître.
Es que cela est-il possible avec excel?

Je ne sais pas si ma question est très clair....

Cdlt,

YaGo
 

gilbert_RGI

XLDnaute Barbatruc
Re : Attribuer code vba sur un autre fichier

Bonjour

à adapter :cool:

Code:
Option Base 1
'Microsoft Visual Basic For Applications Extensibility 5.3"
Sub EcritSUB()    'Ecrit directement dans 1 nouveau classeur
    Dim Wbk As Excel.Workbook
    Dim Code, i As Integer
    Code = Array("Sub Test_macro()", _
                 "Msgbox ""Je suis une macro.""", _
                 "End Sub")
    Set Wbk = Workbooks.Add
    With Wbk.VBProject.VBComponents.Add(vbext_ct_StdModule)
        For i = 0 To 2
            .CodeModule.InsertLines i + 1, Code(i + 1)
        Next i
    End With
    Wbk.SaveAs "I:\Ajeter\fichier_macro.xls"
    Sheets(1).Select
End Sub
 

YaGo

XLDnaute Junior
Re : Attribuer code vba sur un autre fichier

Par contre j'ai une autre question...

Lorsque j'ai réalisé toutes mes opérations dans mon fichier "Maître" je le ferme puis laisse ouvert le fichier "Esclave".
Sauf que lorsque je clic sur le fichier esclave pour travailler dessus, Excel cesse de fonctionner...

Existe-il a code spécifique pour ce genre d'opération ou cela est-il impossible?

Mon code ci dessous:

Code:
Workbooks.Open (Repertory & "\" & WorkbookSlave)
WorkbookMaster.Close
 

gilbert_RGI

XLDnaute Barbatruc
Re : Attribuer code vba sur un autre fichier

votre code est-il structuré comme ceci

Code:
Sub testme()
    Repertory = "C:\dossier_ajeter" ' à modifier
    workbookslave = "test_fichier_macro.xlsm" ' fichier exemple
    WorkbookMaster = ThisWorkbook.Name
    Workbooks.Open (Repertory & "\" & workbookslave)
    Workbooks(WorkbookMaster).Close
End Sub
:confused:
 

YaGo

XLDnaute Junior
Re : Attribuer code vba sur un autre fichier

Voila mon code en entier, cela semble assez proche de ta structure.

Sub AddRatio(DirectoryLink As String, TextBID As String)
Dim WorkbookMaster As Workbook, WorkbookSlaveREF As String, WorkbookSlaveKV As String
Dim NewRatio, Reference, Ratio, KeyValues, TabTotal
Dim Repertory As String, i As Integer, LastRowTab As Integer, LastRow As Integer

Repertory = ActiveWorkbook.Path
Set WorkbookMaster = ActiveWorkbook
WorkbookSlaveREF = Dir(DirectoryLink & "\REF*.xls")
WorkbookSlaveKV = Dir(Repertory & "\KV " & TextBID & " AO.xls")
Set Reference = Workbooks.Open(DirectoryLink & "\" & WorkbookSlaveREF)
Set KeyValues = Workbooks.Open(Repertory & "\" & WorkbookSlaveKV)
Set Ratio = Reference.Sheets("Tableau")
Set NewRatio = KeyValues.Sheets("Table")

NewRatio.Unprotect ("0000")


LastRowTab = Ratio.Range("A6").End(xlDown).row 'Dernière ligne de la base de données esclave
TabTotal = Ratio.Range("A6:H" & LastRowTab) 'Mise en place des valeurs dans le tableau esclave
For i = LBound(TabTotal) To UBound(TabTotal)
NewRatio.Cells(i + 5, 24) = TabTotal(i, 8)
With NewRatio.Cells(i + 5, 24)
.NumberFormat = "#,##0"
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
End With
Next

NewRatio.Select
NewRatio_Outline.ShowLevels 2, 1
NewRatio.Protect ("0000")
Workbooks(WorkbookSlaveKV).Save
Workbooks(WorkbookSlaveREF).Close
'Workbooks(WorkbookSlaveKV).Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Workbooks.Open (Repertory & "\" & WorkbookSlaveKV)
'WorkbookMaster.Close
End Sub
 

YaGo

XLDnaute Junior
Re : Attribuer code vba sur un autre fichier

Les remarques mon seulement servi à faire différent test mais le code de base comprend ces instructions.

Et pour l'écran c'est afin d'éviter d'afficher les calcules au cours du programme
 

YaGo

XLDnaute Junior
Re : Attribuer code vba sur un autre fichier

Désoler mais ton code ne marche pas...
seulement WorkbookMaster.Close permet de fermer le fichier maître
Et une fois le fichier maître fermé, le fichier esclave ne marche toujours pas et fait planter excel :(
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 173
Messages
2 085 937
Membres
103 052
dernier inscrit
nizar0007