Créer une boucle sur des variables Noms ?

lebarbo

XLDnaute Occasionnel
Bonjour forum, bonjour à tous,

Je souhaiterais faire une boucle pour éviter de reproduire plusieurs fois le même code avec des noms (et non des numéros) de classeurs différents.

En somme j'ai trois classeurs à consolider dans un. Les trois classeurs sont Roger.xls, David.xls et Gérard.xls qui ont chacun une feuille s'appelant Sheet1 que je veux copier dans un classeur Synthèse.xls. Mais je n'arrive pas à faire ma boucle.
Voici ce que j'ai fait mais bien sur le Nom & i ne fonctionne pas malheureusement ; )
Si vous avez des idées, merci d'avance.

Sub essai()

Nom1 = "Roger"
Nom2 = "David"
Nom3 = "Gérard"

For i = 1 To 3
Application.DisplayAlerts = False
On Error Resume Next
Workbooks("Synthèse.xls").Sheets(Nom & i).Delete
Workbooks.Open Filename:="K:\Fichiers\" & Nom & i & ".xls"
Workbooks(Nom & i & ".xls").Sheets("Sheet1").Copy Before:=Workbooks("Synthèse.xls").Sheets(i)
Workbooks("Synthèse.xls").Sheets(i).Name = Nom & i
Workbooks(Nom & i & ".xls").Close False
Next i

End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Créer une boucle sur des variables Noms ?

Bonjour



En utilisant un tableau
Dim i as Integer
Dim Tablo() As Variant
Tablo=Array("Roger","David","Gérard")
For i = 0 To 2
Application.DisplayAlerts = False
On Error Resume Next
Workbooks("Synthèse.xls").Sheets(Tablo(i)).Delete
 

Staple1600

XLDnaute Barbatruc
Re : Créer une boucle sur des variables Noms ?

Re

Cette macro fonctionne :

Code:
Sub test()
Dim i As Integer
Dim Tablo() As Variant
Tablo = Array("Feuil2", "Feuil3", "Feuil4")
For i = 0 To 2
Application.DisplayAlerts = False
'On Error Resume Next
ActiveWorkbook.Sheets(Tablo(i)).Delete
Next
End Sub

Je te laisse adapter le reste de la macro
 

Staple1600

XLDnaute Barbatruc
Re : Créer une boucle sur des variables Noms ?

Re


Finalement comme j'avais un peu de temps

Voici la macro finale (test OK sur mon PC)

Code:
Sub test()
Dim Conso As Workbook
Set Conso = ThisWorkbook
Dim i As Integer
Dim Tablo() As Variant
Tablo = Array("Roger", "David", "Gérard")
For i = 0 To 2
Application.DisplayAlerts = False
On Error Resume Next
Conso.Sheets(Tablo(i)).Delete
Workbooks.Open Filename:="[B]C:\Temp\[/B]" & Tablo(i) & ".xls"
Workbooks(Tablo(i) & ".xls").Sheets("Sheet1").Copy Before:=Conso.Sheets(i + 1)
Conso.Sheets(i + 1).Name = Tablo(i)
Workbooks(Tablo(i) & ".xls").Close False
Next
End Sub
Il te restera à modifier le chemin.

Bon appétit à tous
 

Discussions similaires

Statistiques des forums

Discussions
311 997
Messages
2 084 452
Membres
102 580
dernier inscrit
DESIRE PATRICK