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
692

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 696
dernier inscrit
lgerbaud