Bonjour,
Je travaille avec Excel 2007.
Mon programme effectue une copie du fichier Excel qui le contient (nommé "Fichier.xlsm") pour générer un nouveau fichier nommé "Fichier2.xlsm".
Le fichier d'origine comporte 12 onglets portant les noms suivants : "Mars 2014", "Avril 2014", ..., "Janvier 2015","Février 2015"
J'ai un tableau (tabMois) contenant des noms de mois sur le même modèle ("Avril 2014", "Mai 2014" etc).
Comme ce tableau ne contient pas le mois de Mars 2014, je voudrais supprimer l'onglet "Mars 2014" dans la copie du fichier que j'ai effectuée. Or quand je cherche à suoprimer cet onglet, je n'ai aucun message (alors qu'il parait que sans utilisation de "Application.DisplayAlerts = False" je devrais avoir une demande de confirmation) et je constate ensuite que l'onglet est toujours dans le fichier et n'a pas été supprimé.
J'ai vérifié que le contenu de mon tableau était correct, et que je passais bien dans la fonction de suppression de l'onglet. J'ai même ajouté un "On Error Goto" mais sans qu'aucune erreur ne soit signalée lors de l'exécution du programme.
Quelqu'un a t-il une idée de la raison pour laquelle l'onglet n'est pas supprimé ? Merci de votre aide.
PS : Le tableau tabMois est une variable globale. Dans les deux fichiers, il existe un premier onglet dont le nom est "Paramétrage" et qui doit toujours être conservé.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 Sub btnMAJ() On Error GoTo Err_btnMAJ Dim filePath As String Dim newFilePath As String Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim feMois As Variant Dim feSheet As Variant Dim ongletTrouve As Boolean Dim objFSO As Object Dim nomOnglet As String Dim numAnnee As Integer Dim mois As clsMois Dim i As Integer Dim compteur As Integer ' Initialise la liste des mois pour le nouveau classeur InittabMois ' Génération du nouveau classeur et de ses onglets (1 an glissant) filePath = ActiveWorkbook.Path + "\Fichier.xlsm" newFilePath = ActiveWorkbook.Path + "\Fichier2.xlsm" ' On effectue la copie du fichier Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CopyFile filePath, newFilePath, True 'On accède au nouveau fichier pour lire les noms de ses onglets Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(newFilePath) boucle: For Each feSheet In xlBook.Worksheets ongletTrouve = False If feSheet.Name <> "Paramétrage" Then For Each feMois In tabMois If LCase(feSheet.Name) = LCase(feMois.LibelleMois) Then ongletTrouve = True End If Next ' Si l'onglet recherché ne figure pas dans le tableau tabMois, on le supprime du fichier If ongletTrouve = False Then feSheet.Delete End If End If Next Fin_btnMAJ: xlBook.Save xlBook.Close xlApp.Quit Exit Sub Err_btnMAJ: MsgBox Err & ": " & Error(Err) GoTo Fin_btnMAJ End Sub
Partager