Appliquer un code VBA à plusieurs classeurs sans les recopier x fois / excel VBA

Jonathan1986

XLDnaute Nouveau
Bonjour à tous!! Bonjour le forum!!

Je fais appel à vous car je suis débutant en VBA et cherche à simplifier mes codes, seulement mon niveau me permet de faire des choses limitées.

En gros j'ai une macro qui s'éxecute a l'ouverture de mon fichier pour importer les données d'un tableau dans un onglet de mon classeur actif à partir d'un classeur externe (invisible).

Mon code fonctionne très bien pour un classeur, mais j'en ai une 10ne avec lesquels importer les données. Savez-vous comment je pourrais faire un code du genre : applique le code suivant pour tous les classeurs ...

Voici le code pour un classeur externe qui marche.

D'avance merci pour votre aide et pour votre temps

A+
Jo


Private Sub Workbook_Open()
Dim xlApp As New Excel.Application
Dim xlBook, xlBook1, xlBook2, xlBook3, xlBook4, xlBook5, xlBook6 As New Excel.Workbook
Dim xlSheet, xlSheet1, xlSheet2, xlSheet3, xlSheet4, xlSheet5, xlSheet6 As Worksheet
Dim L As String
Dim i As Integer

Set xlBook = xlApp.Workbooks.Open(ThisWorkbook.Sheets("DATA").Range("G2") & "\BDDD.xlsm")
Set xlSheet = xlBook.Sheets("BDDD")
L = xlSheet.Range("A65536").End(xlUp).Row + 1
xlSheet.Range("Tableau10").Copy
Dim WB As Workbook
Set WB = Workbooks("DEVIS CERIC 1 - Copie.xlsm")
Set xlSheet1 = WB.Sheets("BDDD")
For i = 2 To L
WB.Sheets("BDDD").Range("A" & i & ":G" & i).Value = xlSheet.Range("A" & i & ":G" & i).Value
Next i
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

End Sub
 

Vorens

XLDnaute Occasionnel
Re : Appliquer un code VBA à plusieurs classeurs sans les recopier x fois / excel VBA

Hello,


Il te faut faire une boucle avec pour chaque nouvelle itération une modification du nom du classeur qui est ici hardcodé.

Set WB = Workbooks("DEVIS CERIC 1 - Copie.xlsm")

Nom hard codé donc remplace le par une variable.

Après pour attribuer le nom du classeur à la variable tu peux créer un tableau de paramètre dans ton fichier ou se situe le code genre dans la colonne A de la feuille "Paramètre"

A1 : Classeur 1
A2 : Classeur 2
A3 : Classeur 3
An : Classeur n

une boucle:
//Boucle qui va de 1 à la taille max du tableau

for i = 1 to thisworkbook.sheets("Parametre").range("A" & "65535").end (xlup).row

//Attribution du nom du classeur à la variable

ClasseurActuel = thisworkoob.sheets("Parametre").range ("A" & i).value


//ton code
Set WB = Workbooks(ClasseurActuel) //pas oublier de modifier cette ligne


next


Meilleures salutations
 

Discussions similaires

Réponses
14
Affichages
861

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA