Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Jonathan1986
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jonathan1986

Guest
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…