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
Partager