Bug dans un LOOP lorsque je SAVE et CLOSE un fichier

Bonsoir,

j'ai un gros bug entre la fonction Worksbook.save et Worksbook.Close.

Tout se situe dans une sub qui scanne tous les fichiers d'un dossier. Lorsque je sauve et que je ferme le fichier ouvert et modifié il 'perd le fil' du scan, et scanne en boucle sans arrêt tous les fichiers.

Ca ne le fait pas si je laisse le fichier ouvert sans le fermer, et vis versa.

J'ai testé le code:

Worksbook(fichier).Close savechanges = True

mais ça ne sauve pas le fichier modifié, il le ferme juste.

Je deviens dingue, car c'est INCOMPRÉHENSIBLE!!!!

Je REMERCIE MILLE FOIS la personne qui m'aidera!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Private Sub FichSuivant(ByRef Rep)
Dim FileItem As Object
Dim fichier As String
Dim nom_data As String
Dim typefichier As String

On Error Resume Next

nom_data = ActiveWorkbook.Name

For Each FileItem In Rep.Files

'CODE pour extraire nom fichier+extension d'un path
fichier = Right(FileItem.path, Len(FileItem.path) - InStrRev(FileItem.path, "\", -1, 1))

'FILTRE tout les fichiers non XLSM
typefichier = Right(FileItem.path, Len(FileItem.path) - InStrRev(FileItem.path, ".", -1, 1))
If typefichier <> "xlsm" Then GoTo next_fichier

Workbooks.Open Filename:=FileItem.path

'FILTRE si un onglet a bien le codename "main"
r_existe = False
    For o_existe = 1 To Sheets.count
        If Sheets(o_existe).CodeName = "recette" Then
        r_existe = True
        End If
    Next

If r_existe = False Then GoTo close_fichier

Workbooks(nom_data).Sheets("data").Cells.Copy Workbooks(fichier).Sheets("data").Range("A1")

Workbooks(fichier).Save

close_fichier:
'Workbooks(fichier).Close
next_fichier:
Next

Set FileItem = Nothing

End Sub

Bonsoir,

je pense en effet que chauqe fois que tu sauves un fichier, le contenu du répertoire change. essaie ceci, le principe, on prend une copie du répertoire avant d'y toucher.

à tester

Private Sub FichSuivant(ByRef Rep)
Dim FileItem As Object
Dim ff(1000) As Object
Dim fichier As String
Dim nom_data As String
Dim typefichier As String

On Error Resume Next

nom_data = ActiveWorkbook.Name

For Each FileItem In Rep.Files
i = i + 1
Set ff(i) = FileItem
Next
lf = i
For i = 1 To lf
Set FileItem = ff(i)
'CODE pour extraire nom fichier+extension d'un path
fichier = Right(FileItem.Path, Len(FileItem.Path) - InStrRev(FileItem.Path, "\", -1, 1))

'FILTRE tout les fichiers non XLSM
typefichier = Right(FileItem.Path, Len(FileItem.Path) - InStrRev(FileItem.Path, ".", -1, 1))
If typefichier <> "xlsm" Then GoTo next_fichier

Workbooks.Open Filename:=FileItem.Path

'FILTRE si un onglet a bien le codename "main"
r_existe = False
    For o_existe = 1 To Sheets.Count
        If Sheets(o_existe).CodeName = "recette" Then
        r_existe = True
        End If
    Next

If r_existe = False Then GoTo close_fichier

Workbooks(nom_data).Sheets("data").Cells.Copy Workbooks(fichier).Sheets("data").Range("A1")

Workbooks(fichier).Save

close_fichier:
'Workbooks(fichier).Close
next_fichier:
Next i

Set FileItem = Nothing

End Sub

merci

mais à quoi correspond 'lf' ?

bonsoir,

lf contient le nombre de fichiers trouvés dans le répertoire

CA MARCHE!!!

MERCI!!!

J'ai juste déclaré lf comme Interger et c'est bon!

merci beaucoup h2so4

Rechercher des sujets similaires à "bug loop lorsque save close fichier"