Fermer un fichier Excel

Le
steph05
Bonjour,

Voici mon problème:
Je veux faire une boucle sur tous les fichiers d'un répertoire (nommé
dossier), et les fermer au fur et à mesure. Mais je n'arrive pas à les
fermer!
Qu'est-ce qui cloche dans mon code?

Merci

Dim Fichier
With Application.FileSearch
.NewSearch
.LookIn = "C:dossier"
.Filename = "*.xls"
.Execute

For Each Fichier In .FoundFiles

Workbooks.Open Fichier
Range("A23").End(xlDown).Select
Range(ActiveCell, "H23").Copy
Windows("classeur").Activate
If Range("A1").Value = "" Then
Range("A1").Select
Else: Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
ActiveSheet.Paste
Windows(Fichier).Close


Next Fichier

End With
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mgr Banni
Le #16735901
ActiveWorkbook.Close ne serait-il pas suffisant...mais nécessaire?
Mgr T.B.

"steph05"
Bonjour,

Voici mon problème:
Je veux faire une boucle sur tous les fichiers d'un répertoire (nommé
dossier), et les fermer au fur et à mesure. Mais je n'arrive pas à les
fermer!
Qu'est-ce qui cloche dans mon code?

Merci

Dim Fichier
With Application.FileSearch
.NewSearch
.LookIn = "C:dossier"
.Filename = "*.xls"
.Execute

For Each Fichier In .FoundFiles

Workbooks.Open Fichier
Range("A23").End(xlDown).Select
Range(ActiveCell, "H23").Copy
Windows("classeur").Activate
If Range("A1").Value = "" Then
Range("A1").Select
Else: Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
ActiveSheet.Paste
Windows(Fichier).Close


Next Fichier

End With
steph05
Le #16735891
On 6 sep, 16:16, "Mgr Banni"
ActiveWorkbook.Close ne serait-il pas suffisant...mais nécessaire?
Mgr T.B.

"steph05"
Bonjour,

Voici mon problème:
Je veux faire une boucle sur tous les fichiers d'un répertoire (nommé
dossier), et les fermer au fur et à mesure. Mais je n'arrive pas à le s
fermer!
Qu'est-ce qui cloche dans mon code?

Merci

Dim Fichier
With Application.FileSearch
  .NewSearch
  .LookIn = "C:dossier"
  .Filename = "*.xls"
  .Execute

For Each Fichier In .FoundFiles

    Workbooks.Open Fichier
    Range("A23").End(xlDown).Select
    Range(ActiveCell, "H23").Copy
    Windows("classeur").Activate
    If Range("A1").Value = "" Then
        Range("A1").Select
        Else: Range("A1").End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
    End If
    ActiveSheet.Paste
    Windows(Fichier).Close

Next Fichier

End With



Oui mais ça ne ferme pas le bon fichier. J'ai en fait 2 fichiers:
- Fichier
- Classeur
J'ouvre Fichier, j'en copie une partie que je colle dans Classeur.
Donc à ce moment là, c'est Classeur qui est actif et je veux fermer
Fichier!

Merci quand même !
michdenis
Le #16736211
Essaie ceci :

Attention, comme tu n'as pas mentionné le
nom des feuilles (classeur source et de destination)
j'ai supposé que dans les 2 cas c'était la prèmière
feuille du classeur.

'------------------------------------------
Sub test()

Dim Repertoire As String
Dim Wk As Workbook, Wk1 As Workbook
Dim Fichier As String, DerLig As Long

Repertoire = "c:Exceltoday"

Fichier = Dir(Repertoire & "*.xls")
Set Wk = ThisWorkbook

Application.ScreenUpdating = False
Do Until Fichier = ""
Set Wk1 = Workbooks.Open(Repertoire & Fichier)
With Wk1.Worksheets(1)
x = .Range(.Range("A23").End(xlDown).Address, "H23")
End With
With Wk.Worksheets(1)
If .Range("A1") = "" Then
DerLig = .Range("A1").Row
Else
DerLig = .Range("A65536").End(xlUp)(2).Row
End If
.Range("A" & DerLig).Resize(UBound(x, 1), UBound(x, 2)) = x
End With
Wk1.Close False
Loop

End Sub
'------------------------------------------



"steph05"
Bonjour,

Voici mon problème:
Je veux faire une boucle sur tous les fichiers d'un répertoire (nommé
dossier), et les fermer au fur et à mesure. Mais je n'arrive pas à les
fermer!
Qu'est-ce qui cloche dans mon code?

Merci

Dim Fichier
With Application.FileSearch
.NewSearch
.LookIn = "C:dossier"
.Filename = "*.xls"
.Execute

For Each Fichier In .FoundFiles

Workbooks.Open Fichier
Range("A23").End(xlDown).Select
Range(ActiveCell, "H23").Copy
Windows("classeur").Activate
If Range("A1").Value = "" Then
Range("A1").Select
Else: Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
ActiveSheet.Paste
Windows(Fichier).Close


Next Fichier

End With
michdenis
Le #16736301
Il manque une ligne de code importante :
après celle-cii :
Wk1.Close False
Ajoute ceci :
fichier = dir()




"michdenis" %
Essaie ceci :

Attention, comme tu n'as pas mentionné le
nom des feuilles (classeur source et de destination)
j'ai supposé que dans les 2 cas c'était la prèmière
feuille du classeur.

'------------------------------------------
Sub test()

Dim Repertoire As String
Dim Wk As Workbook, Wk1 As Workbook
Dim Fichier As String, DerLig As Long

Repertoire = "c:Exceltoday"

Fichier = Dir(Repertoire & "*.xls")
Set Wk = ThisWorkbook

Application.ScreenUpdating = False
Do Until Fichier = ""
Set Wk1 = Workbooks.Open(Repertoire & Fichier)
With Wk1.Worksheets(1)
x = .Range(.Range("A23").End(xlDown).Address, "H23")
End With
With Wk.Worksheets(1)
If .Range("A1") = "" Then
DerLig = .Range("A1").Row
Else
DerLig = .Range("A65536").End(xlUp)(2).Row
End If
.Range("A" & DerLig).Resize(UBound(x, 1), UBound(x, 2)) = x
End With
Wk1.Close False
Loop

End Sub
'------------------------------------------



"steph05"
Bonjour,

Voici mon problème:
Je veux faire une boucle sur tous les fichiers d'un répertoire (nommé
dossier), et les fermer au fur et à mesure. Mais je n'arrive pas à les
fermer!
Qu'est-ce qui cloche dans mon code?

Merci

Dim Fichier
With Application.FileSearch
.NewSearch
.LookIn = "C:dossier"
.Filename = "*.xls"
.Execute

For Each Fichier In .FoundFiles

Workbooks.Open Fichier
Range("A23").End(xlDown).Select
Range(ActiveCell, "H23").Copy
Windows("classeur").Activate
If Range("A1").Value = "" Then
Range("A1").Select
Else: Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
ActiveSheet.Paste
Windows(Fichier).Close


Next Fichier

End With
steph05
Publicité
Poster une réponse
Anonyme