Bonjour,
J'ai une macro qui fonctionne très bien sur Excel 2003 mais depuis le passage à excel j'ai un boggue à cette ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ImportedWb.Sheets(1).Copy After:=.Sheets(intWs)
Le fichier source est un fichier xlsx.
Le bug survient uniquement lorsque j'importe un fichier xlsx. Si le fichier est un fichier xlxs classique,l'import se déroule correctement.

J'ai essayé de convertir mon fichier cible en fichier xlsm (avec macro) mais le bug est toujours présent

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
68
 
Public Function FileSearch(ByVal Title As String) As String
    Dim fd As FileDialog
    Dim FileName As String
 
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Filters.Add "Tous les fichiers Excel", "*.xl*"
        .Title = Title
    End With
    If fd.Show = -1 Then FileName = fd.SelectedItems(1)
 
    FileSearch = FileName
    Set fd = Nothing
End Function
 
Public Sub ImportFile(ByVal FileName As String)
'
' ImportFile Macro
' Cette macro permet d'importer une feuille d'un autre classeur
'
 
Dim ImportedWb As Workbook
Dim intWs As Integer, i As Integer
Dim wasOpen As Boolean
Dim fName As String, dummy As String
 
'Recupération du nom de fichier
dummy = FileName
While Right(dummy, 1) <> "\"
    fName = Right(dummy, 1) & fName
    dummy = Left(dummy, Len(dummy) - 1)
Wend
 
wasOpen = False
With ThisWorkbook
    'Supprimer l'éventuelle feuille Temp
    On Error Resume Next
    Application.DisplayAlerts = False
    .Sheets("Temp").Delete
    .Sheets("TemporarySortedSheet").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0
    intWs = .Worksheets.Count
 
    If IsOpen(fName) Then
        Set ImportedWb = Workbooks(fName)
        wasOpen = True
    Else
        'ouverture du fichier
        Set ImportedWb = Workbooks.Open(FileName)
    End If
    'Copie de la feuille à importer dans ce classeur
    ImportedWb.Sheets(1).Copy After:=.Sheets(intWs)
    'Fermeture fichier et libération de la variable
    If Not wasOpen Then
        ImportedWb.Close False
    End If
    Set ImportedWb = Nothing
    'Renommer la feuille importée
    .Sheets(intWs + 1).Name = "Temp"
    'On créer une feuille pour le trie
    .Worksheets.Add().Name = "TemporarySortedSheet"
End With
 
Set ImportedWb = Nothing
 
End Sub
D'avance merci