Bonjour tout le monde,
Voici mon problème : j'ai un dossier qui contient 1099 fichiers Excel nommé 2900.xls à 3999.xls certains sont natif Excel 95 et les autres Excel 2002.
Je voulais par macro écrire une macro dans ThisWorkbook de chaque fichiers. J'ai trouvé ce code sur la faq Excel que j'ai un peu de mal à adapter à ma situation.
Mais les macros ne s'écrive pas dans les fichiers natif Excel 95, sur ce je m'aperçois qu'en ouvrant manuellement les fichiers et en les enregistrant Excel prévient "3028.xls est un fichier de classeur Microsoft Excel 5.0/95. Voulez-vous convertir ce fichier au nouveau format?"
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Sub importe() 'Nécessite d'activer la référence "Microsoft Visual Basic for Applications Extensibility 5.3" Dim Wb As Workbook Dim oModule As CodeModule Dim VbComp As VBComponent Dim x As Integer Dim Cible As String Dim file As String Dim i As Integer For i = 2901 To 3999 file = Trim(Str(i)) Application.Workbooks.Open "D:\Dossier\" & file & ".xls" Cible = "NomModule" 'Définit le classeur de destination (qui doit être préalablement ouvert). Set Wb = Workbooks(file & ".xls") 'Charge le module dans le classeur Set VbComp = Wb.VBProject.VBComponents.Import("D:\ThisWorkbook.cls") 'Le renomme (pour le supprimer plus facilement ultérieurement VbComp.Name = Cible Set oModule = VbComp.CodeModule 'Transfère les données chargées dans ThisWorkbook. 'Attention les données existantes dans "ThisWorkbook" sont écrasées. With Wb.VBProject.VBComponents("ThisWorkbook").CodeModule x = .CountOfLines .DeleteLines 1, x .InsertLines 1, oModule.Lines(1, oModule.CountOfLines) End With 'Suppression du module précédemment chargé With Wb.VBProject.VBComponents .Remove .Item(Cible) End With Workbooks(file & ".xls").Save Workbooks(file & ".xls").Close Next i End Sub
Donc je réécris une petite macro pour ouvrir tout les fichiers et les enregistrer:
Mais avec ce code Excel enregistre au format 95 et je ne sais pas comment le forcer à enregistrer au format 2002.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub macro2() Dim i As Integer For i = 2900 To 3999 Application.Workbooks.Open "D:\Dossier\" & i & ".xls" ActiveWorkbook.Save ActiveWorkbook.Close Next i End Sub
Merci d'avance à ceux qui pourrons m'aider.
Partager