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