Problème pour coller/sauvegarder dans un classeur fermé

Bonjour,

Comme j'ai dis dans le titre, j'ai un problème soit pour coller soit pour sauvegarder les modifications de j'apporte à partir d'un autre classeur.

Je vous joins mon code si quelqu'un peut regarder, ça serait gentil:

Option Explicit

Private Sub ComboBox1_Change()

'Déclaration des variables
Dim mot As String
Dim t() As String
Dim ac As String, nc As String, pc As String, lc As String, tc As String, dc As String
Dim n As Integer, i As Integer, nr As Integer
Dim debut As Integer, fin As Integer
Dim fichier As String
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
Dim ST As Boolean
Dim sheet As Worksheet

mot = Me.ComboBox1.Text 'on désigne par mot l'ensemble de la ligne
t = Split(mot, "   ,   ") 'on sépare chaque partie de la ligne
ac = t(0) 'on stocke la première partie dans la variable ac (acteur choisi)
nc = t(1) 'on stocke la deuxième partie dans la variable nc (nature choisie)
pc = t(2) 'on stocke la troisième partie dans la variable pc (porteur choisi)
lc = t(3) 'on stocke la quatrième partie dans la variable lc (LRU choisi)
tc = t(4) 'on stocke la cinquième partie dans la variable tc (Type de moyen choisi)
dc = t(5) 'on stocke la sixième partie dans la variable dc (Demandeur choisi)

n = Cells(Rows.Count, 1).End(xlUp).Row 'On regarde la dernière ligne écrite pour la liste les fichiers

For i = 7 To n 'Pour toutes les lignes remplies à partir de la 7 ème
    'Si les cellules correspondent
    If ac = Cells(i, 1) And nc = Cells(i, 2) And pc = Cells(i, 3) And lc = Cells(i, 4) And tc = Cells(i, 5) And dc = Cells(i, 6) Then
        debut = i 'on retient la valeur de i
        Exit For 'on sort de la boucle
    End If
Next

If debut = 0 Then 'si on ne trouve pas de début
    MsgBox "Non trouvé" 'on annonce qu'on a pas trouvé
    Exit Sub 'on arrete la fonction
End If

For i = debut To n
    'si une des valeurs n'est plus bonne
    If ac <> Cells(i, 1) Or nc <> Cells(i, 2) Or pc <> Cells(i, 3) Or lc <> Cells(i, 4) Or tc <> Cells(i, 5) Or dc <> Cells(i, 6) Then
        fin = i 'on retient la valeur de i
        Exit For 'on sort de la boucle
    End If
Next

Range("G" & debut, "Q" & (fin - 1)).Copy 'On selectionne la plage de données qui nous interesse

nr = ThisWorkbook.Worksheets("Recherche").Cells(Worksheets("Recherche").Rows.Count, 1).End(xlUp).Row 'On regarde la dernière ligne écrite pour la liste les fichiers

For i = 6 To nr 'Pour toutes les lignes remplies à partir de la 6 ème
    'Si les cellules correspondent
    If ac = ThisWorkbook.Worksheets("Recherche").Cells(i, 1) And nc = ThisWorkbook.Worksheets("Recherche").Cells(i, 2) And pc = ThisWorkbook.Worksheets("Recherche").Cells(i, 3) And lc = ThisWorkbook.Worksheets("Recherche").Cells(i, 4) And tc = ThisWorkbook.Worksheets("Recherche").Cells(i, 5) And dc = ThisWorkbook.Worksheets("Recherche").Cells(i, 6) Then
        fichier = ThisWorkbook.Worksheets("Recherche").Cells(i, 7) 'alors on stocke le chemin du classeur à ouvrir
    End If
Next

Set xlBook = xlApp.Workbooks.Open(Filename:=fichier, ReadOnly:=False)  'on ouvre le fichier sans qu'il soit en lecture seule
ST = False 'initialisation de ST

For Each sheet In xlBook.Worksheets 'Pour chaque feuille du classeur
    If sheet.Name = "Actions revues ST" Then 'si il existe une feuille action revues ST
        ST = True 'on change la valeur de ST
    End If
Next

If ST = False Then 'si la valeur a changée
    Set xlSheet = xlBook.Sheets("Actions revues") 'on ouvre la feuille actions revues
Else: Set xlSheet = xlBook.Sheets("Actions revues ST")  'sinon on ouvre la feuille actions revues ST
End If
xlSheet.Activate
xlSheet.Range("A7").PasteSpecial
Call ViderPressePapier 'on vide le presse papier
xlBook.Save
xlBook.Close  'On ferme le classeur
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub

La faute se trouve dans la partie surligner, je pense.

Rechercher des sujets similaires à "probleme coller sauvegarder classeur ferme"