Bonjour à tous,

Tout d'abord permettez-moi de vous remercier d'avance de lire la suite et pour votre aide, étant donné que je suis un grand débutant sur VBA (j'ai commencé il y a moins d'un mois en autodidacte...).

J'essaie en ce moment de créer à partir d'un fichier répertoire une liste de fichiers à ouvrir, pour lesquels je sélectionne ensuite certains onglets définis à l'avance dans mon excel répertoire, pour ensuite les exporter en pdf.

Je n'ai aucun soucis pour créer une boucle d'ouverture de fichier, mais je n'arrive pas l'étape de sélection des onglets au nombre variable.

Concrètement, ci dessous:

Fichier source
Fichier A Onglet C Onglet D Onglet E Onglet F
Fichier B Onglet G Onglet H
Fichier C

J'ai un fichier source excel., dans ce fichier source, j'ai un onglet 1 qui comprend le chemin de fichiers sur lesquels j'effectue pas mal d'opérations; et un onglet 2 qui correspond à ce qui a si dessus, c'est à dire une liste de fichiers avec des noms d'onglets dans ces fichiers à exporter en pdf.

En A2 j'ai le nom du fichier A, en A3 le fichier B, etc.
Je veux ouvrir le fichier A, sélectionner les onglets C,D,E,F, exporter sous pdf, fermer le fichier A, ; ouvrir le fichier B, sectionner les onglets G & H, exporter sous pdf, etc.

Pour le moment voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub Refresh_BMU()
 
Dim SVSheet As Worksheet
Dim x As Long
Dim i As Integer
Dim j As Integer
Dim t As Integer
Dim u As Integer
Dim v As Integer
Dim MemoVisible As Boolean
Dim MemoAutoRecover As Boolean
Dim MemoSheetName As String
Dim TestSVContent As Boolean
Dim StartRefreshTime As Date
Dim PreviousRetName As String
Dim CountSheet, ConnectedSheetsCount As Integer
Dim vtGrid, ContentType As Variant
Dim server, user, Passw, appli, Db, FriendlyName, URL, provider As Variant
Dim sts As Variant
Dim onglet1 As String
Dim onglet2 As String
Dim txt As Pictures
 
onglet1 = Range("C20")
onglet2 = Range("C21")
 
Worksheets(onglet1).Select
t = Application.WorksheetFunction.CountA(Range("A:A"))
 
For i = 2 To t
Application.DisplayAlerts = False
Workbooks.Open Filename:=Range("A" & i), UpdateLinks:=Range("C" & i)

Cette partie de code me permet dans mon onglet 1 d'ouvrir un à 1 les fichiers et j'ai ensuite un pavé d'une trentaine de lignes de codes pour opérer pas mal de modifications mais cela ne concerne pas mon problème donc je ne les remets pas ici.

Ensuite, je ferme les onglets dans ma boucle un par un et je reprends avec la partie de code qui bloque:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ActiveWorkbook.Close
 
Worksheets(onglet1).Select
Set C1 = ActiveWorkbook
 
Workbooks.Open Filename:=Range("A" & i), UpdateLinks:=Range("C" & i)
Set C2 = ActiveWorkbook
 
C1.Activate
 
Worksheets(onglet2).Select
u = Application.WorksheetFunction.CountA(Rows(i))
 
slct = Array(Cells(i, i), Cells(i, u))
slct2 = slct.Text
 
C1.Activate
C1.Worksheets(onglet2).Select
 
C2.Activate
 
Sheets(Array(slct)).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF

Concrètement, ce que je fais, c'est que je bascule sur mon onglet 2 qui contient la liste de fichiers à ouvrir et leurs onglets respectifs à exporter sous pdf.
J'arrive à créer un boucle pour savoir le nombre de fichiers à ouvrir (peut varier), ainsi que compter le nombre d'onglets qui seront pris dans ma sélection pour export en pdf (variable aussi).
Mais je n'arrive pas à stocker le nom de ces onglets sous forme d'un tableau, ou d'une chaîne de caractère, pour que lorsque j'ouvre mon fichier, cette chaine de caractère soit appelée et désignée comme onglets à sélectionner.

J'y arrive s'il n'y a qu'un seul onglet à sélectionner, mai pas plusieurs.
Je suppose qu'il me faudrait une variable temporaire, pour stocker le nom de l'onglet 1, puis stocker lors de la seconde boucle le nom de l’onglet 1 + l'onglet 2, etc.



J'espère que cela peut être clair?
Sinon en tout cas merci pour votre aide, malgré de nombreuses recherches je n'y arrive pas et mes très maigres connaissances me laissent démuni