Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Arrêt exécution macro XL 2003 après ouverture fichier XL 2000

4 réponses
Avatar
JMP
bonjour,

Ma macro écrite en Excel 2003 ouvre, lit des données et ferme successivement
des fichiers Excel 2000 (en lecture seule). Ma macro s'arrête juste après
instruction workbooks.open. Si j'insère comme premier fichier un fichier
Excel 2003, il le traite entièrement et stoppe après ouverture du second (en
XL 2000).
Ci-dessous mon code. Que faire ? Merci d'avance pour votre aide.

secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Set Fs = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
.Filename = "*.xls"
.LookIn = "\aaa\bbb\"
.SearchSubFolders = False
.Execute
With .FoundFiles
For i = 1 To .Count
Set Xlbook = Workbooks.Open(.Item(i))
Set Xlsheet = Xlbook.Worksheets("Logbook")
***traitement données du fichier***
Set Xlsheet = Nothing
Xlbook.Close
Set Xlbook = Nothing
Next i
End With
End With
Application.AutomationSecurity = secAutomation

4 réponses

Avatar
MichDenis
Bonjour JMP,

FileSearch n'existe plus en Excel 2007, aussi bien s'y faire
dès maintenant. ;-)

Ceci devrait aller pour la portion du code que tu as publiée.
Je ne sais pas à quoi sert la ligne de code suivante :
Set Fs = CreateObject("Scripting.FileSystemObject")
Je l'ai omise volontairement mais elle doit t'être utilise pour
la portion inaccessible pour nous !

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

Dim Chemin As String
Dim Fichier As String
Dim Xlbook As Workbook
Dim Xlsheet As Workbook

Chemin = "c:aaabbb"
Fichier = Dir(Chemin & "*.xls")
Application.ScreenUpdating = False
Application.EnableEvents = False
Do While Fichier <> ""
Set Xlbook = Workbooks.Open(Chemin & Fichier)
Set Xlsheet = Xlbook.Worksheets("Logbook")
'le reste du traitement
Xlbook.Close True 'ferme le fichier et sauvegarde
Fichier = Dir()
Loop
Set Xlsheet = Nothing: Set Xlbook = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True

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



"JMP" a écrit dans le message de groupe de discussion :

bonjour,

Ma macro écrite en Excel 2003 ouvre, lit des données et ferme successivement
des fichiers Excel 2000 (en lecture seule). Ma macro s'arrête juste après
instruction workbooks.open. Si j'insère comme premier fichier un fichier
Excel 2003, il le traite entièrement et stoppe après ouverture du second (en
XL 2000).
Ci-dessous mon code. Que faire ? Merci d'avance pour votre aide.

secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Set Fs = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
.Filename = "*.xls"
.LookIn = "aaabbb"
.SearchSubFolders = False
.Execute
With .FoundFiles
For i = 1 To .Count
Set Xlbook = Workbooks.Open(.Item(i))
Set Xlsheet = Xlbook.Worksheets("Logbook")
***traitement données du fichier***
Set Xlsheet = Nothing
Xlbook.Close
Set Xlbook = Nothing
Next i
End With
End With
Application.AutomationSecurity = secAutomation
Avatar
JMP
bonjour MichDenis,

merci pour ta réponse pertinente et rapide. L'instruction Set Fs ... que tu
mentionnes ne sert à rien. Je l'ai supprimée. Ta solution fonctionne mais ne
résout pas mon problème. La macro s'arrête après l'instruction workbooks.open
du premier fichier rencontré. Je ne sais si cela peut faire avancer les
choses, mais je voudrais signaler que lorsque je referme manuellement un tel
fichier XL 2000 après ouverture par la macro, il m'indique qu'il a recalculé
les formules car le dernier enregistrement a eu lieu dans une ancienne
version d'Excel. Bien qu'étant en lecture seule, il me propose de sauvegarder
les modifications (suite à ce recalcul, je n'ai rien modifié).
Serait-il utile de recopier la macro dans Excel 2000 pour résoudre mon
problème ?

Merci et bonne journée

"MichDenis" a écrit :

Bonjour JMP,

FileSearch n'existe plus en Excel 2007, aussi bien s'y faire
ds maintenant. ;-)

Ceci devrait aller pour la portion du code que tu as publie.
Je ne sais pas quoi sert la ligne de code suivante :
Set Fs = CreateObject("Scripting.FileSystemObject")
Je l'ai omise volontairement mais elle doit t'tre utilise pour
la portion inaccessible pour nous !

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

Dim Chemin As String
Dim Fichier As String
Dim Xlbook As Workbook
Dim Xlsheet As Workbook

Chemin = "c:aaabbb"
Fichier = Dir(Chemin & "*.xls")
Application.ScreenUpdating = False
Application.EnableEvents = False
Do While Fichier <> ""
Set Xlbook = Workbooks.Open(Chemin & Fichier)
Set Xlsheet = Xlbook.Worksheets("Logbook")
'le reste du traitement
Xlbook.Close True 'ferme le fichier et sauvegarde
Fichier = Dir()
Loop
Set Xlsheet = Nothing: Set Xlbook = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True

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



"JMP" a crit dans le message de groupe de discussion :

bonjour,

Ma macro crite en Excel 2003 ouvre, lit des donnes et ferme successivement
des fichiers Excel 2000 (en lecture seule). Ma macro s'arrte juste aprs
instruction workbooks.open. Si j'insre comme premier fichier un fichier
Excel 2003, il le traite entirement et stoppe aprs ouverture du second (en
XL 2000).
Ci-dessous mon code. Que faire ? Merci d'avance pour votre aide.

secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Set Fs = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
.Filename = "*.xls"
.LookIn = "aaabbb"
.SearchSubFolders = False
.Execute
With .FoundFiles
For i = 1 To .Count
Set Xlbook = Workbooks.Open(.Item(i))
Set Xlsheet = Xlbook.Worksheets("Logbook")
***traitement donnes du fichier***
Set Xlsheet = Nothing
Xlbook.Close
Set Xlbook = Nothing
Next i
End With
End With
Application.AutomationSecurity = secAutomation




Avatar
MichDenis
| Je ne sais si cela peut faire avancer les
| choses, mais je voudrais signaler que lorsque je
| referme manuellement un tel fichier XL 2000 après
| ouverture par la macro, il m'indique qu'il a recalculé
| les formules car le dernier enregistrement a eu lieu dans
| une ancienne version d'Excel. Bien qu'étant en lecture seule,
| il me propose de sauvegarder les modifications (suite à ce
| recalcul, je n'ai rien modifié).

Cette problématique n'est pas liée à l'exécution de la macro.
Tes fichiers ont été créés avec quelle version d'Excel et tu essaies
de les sauvegarder avec quelle version d'Excel?

Si tu exécutes la manoeuvre manuellement sur ledit fichier,
as-tu le même message à l'enregistrement ?

Tu devrais explorer davantage cette avenue et nous transmettre
plus d'information sur le sujet.




"JMP" a écrit dans le message de groupe de discussion :

bonjour MichDenis,

merci pour ta réponse pertinente et rapide. L'instruction Set Fs ... que tu
mentionnes ne sert à rien. Je l'ai supprimée. Ta solution fonctionne mais ne
résout pas mon problème. La macro s'arrête après l'instruction workbooks.open
du premier fichier rencontré. Je ne sais si cela peut faire avancer les
choses, mais je voudrais signaler que lorsque je referme manuellement un tel
fichier XL 2000 après ouverture par la macro, il m'indique qu'il a recalculé
les formules car le dernier enregistrement a eu lieu dans une ancienne
version d'Excel. Bien qu'étant en lecture seule, il me propose de sauvegarder
les modifications (suite à ce recalcul, je n'ai rien modifié).
Serait-il utile de recopier la macro dans Excel 2000 pour résoudre mon
problème ?

Merci et bonne journée

"MichDenis" a écrit :

Bonjour JMP,

FileSearch n'existe plus en Excel 2007, aussi bien s'y faire
ds maintenant. ;-)

Ceci devrait aller pour la portion du code que tu as publie.
Je ne sais pas quoi sert la ligne de code suivante :
Set Fs = CreateObject("Scripting.FileSystemObject")
Je l'ai omise volontairement mais elle doit t'tre utilise pour
la portion inaccessible pour nous !

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

Dim Chemin As String
Dim Fichier As String
Dim Xlbook As Workbook
Dim Xlsheet As Workbook

Chemin = "c:aaabbb"
Fichier = Dir(Chemin & "*.xls")
Application.ScreenUpdating = False
Application.EnableEvents = False
Do While Fichier <> ""
Set Xlbook = Workbooks.Open(Chemin & Fichier)
Set Xlsheet = Xlbook.Worksheets("Logbook")
'le reste du traitement
Xlbook.Close True 'ferme le fichier et sauvegarde
Fichier = Dir()
Loop
Set Xlsheet = Nothing: Set Xlbook = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True

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



"JMP" a crit dans le message de groupe de discussion :

bonjour,

Ma macro crite en Excel 2003 ouvre, lit des donnes et ferme successivement
des fichiers Excel 2000 (en lecture seule). Ma macro s'arrte juste aprs
instruction workbooks.open. Si j'insre comme premier fichier un fichier
Excel 2003, il le traite entirement et stoppe aprs ouverture du second (en
XL 2000).
Ci-dessous mon code. Que faire ? Merci d'avance pour votre aide.

secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Set Fs = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
.Filename = "*.xls"
.LookIn = "aaabbb"
.SearchSubFolders = False
.Execute
With .FoundFiles
For i = 1 To .Count
Set Xlbook = Workbooks.Open(.Item(i))
Set Xlsheet = Xlbook.Worksheets("Logbook")
***traitement donnes du fichier***
Set Xlsheet = Nothing
Xlbook.Close
Set Xlbook = Nothing
Next i
End With
End With
Application.AutomationSecurity = secAutomation




Avatar
JMP
bonjour,

j'ai copié ma macro dans un fichier vierge Excel 2000 et je l'ai faite
tourner avec les mêmes fichiers qu'hier sans problème d'arrêt de l'exécution.
Merci pour vos conseils.

JMP

"MichDenis" a écrit :

| Je ne sais si cela peut faire avancer les
| choses, mais je voudrais signaler que lorsque je
| referme manuellement un tel fichier XL 2000 après
| ouverture par la macro, il m'indique qu'il a recalculé
| les formules car le dernier enregistrement a eu lieu dans
| une ancienne version d'Excel. Bien qu'étant en lecture seule,
| il me propose de sauvegarder les modifications (suite à ce
| recalcul, je n'ai rien modifié).

Cette problématique n'est pas liée à l'exécution de la macro.
Tes fichiers ont été créés avec quelle version d'Excel et tu essaies
de les sauvegarder avec quelle version d'Excel?

Si tu exécutes la manoeuvre manuellement sur ledit fichier,
as-tu le même message à l'enregistrement ?

Tu devrais explorer davantage cette avenue et nous transmettre
plus d'information sur le sujet.




"JMP" a écrit dans le message de groupe de discussion :

bonjour MichDenis,

merci pour ta réponse pertinente et rapide. L'instruction Set Fs ... que tu
mentionnes ne sert à rien. Je l'ai supprimée. Ta solution fonctionne mais ne
résout pas mon problème. La macro s'arrête après l'instruction workbooks.open
du premier fichier rencontré. Je ne sais si cela peut faire avancer les
choses, mais je voudrais signaler que lorsque je referme manuellement un tel
fichier XL 2000 après ouverture par la macro, il m'indique qu'il a recalculé
les formules car le dernier enregistrement a eu lieu dans une ancienne
version d'Excel. Bien qu'étant en lecture seule, il me propose de sauvegarder
les modifications (suite à ce recalcul, je n'ai rien modifié).
Serait-il utile de recopier la macro dans Excel 2000 pour résoudre mon
problème ?

Merci et bonne journée

"MichDenis" a écrit :

> Bonjour JMP,
>
> FileSearch n'existe plus en Excel 2007, aussi bien s'y faire
> ds maintenant. ;-)
>
> Ceci devrait aller pour la portion du code que tu as publie.
> Je ne sais pas quoi sert la ligne de code suivante :
> Set Fs = CreateObject("Scripting.FileSystemObject")
> Je l'ai omise volontairement mais elle doit t'tre utilise pour
> la portion inaccessible pour nous !
>
> '--------------------------------------------
> Sub test()
>
> Dim Chemin As String
> Dim Fichier As String
> Dim Xlbook As Workbook
> Dim Xlsheet As Workbook
>
> Chemin = "c:aaabbb"
> Fichier = Dir(Chemin & "*.xls")
> Application.ScreenUpdating = False
> Application.EnableEvents = False
> Do While Fichier <> ""
> Set Xlbook = Workbooks.Open(Chemin & Fichier)
> Set Xlsheet = Xlbook.Worksheets("Logbook")
> 'le reste du traitement
> Xlbook.Close True 'ferme le fichier et sauvegarde
> Fichier = Dir()
> Loop
> Set Xlsheet = Nothing: Set Xlbook = Nothing
> Application.EnableEvents = True
> Application.ScreenUpdating = True
>
> End Sub
> '--------------------------------------------
>
>
>
> "JMP" a crit dans le message de groupe de discussion :
>
> bonjour,
>
> Ma macro crite en Excel 2003 ouvre, lit des donnes et ferme successivement
> des fichiers Excel 2000 (en lecture seule). Ma macro s'arrte juste aprs
> instruction workbooks.open. Si j'insre comme premier fichier un fichier
> Excel 2003, il le traite entirement et stoppe aprs ouverture du second (en
> XL 2000).
> Ci-dessous mon code. Que faire ? Merci d'avance pour votre aide.
>
> secAutomation = Application.AutomationSecurity
> Application.AutomationSecurity = msoAutomationSecurityForceDisable
> Set Fs = CreateObject("Scripting.FileSystemObject")
> With Application.FileSearch
> .NewSearch
> .Filename = "*.xls"
> .LookIn = "aaabbb"
> .SearchSubFolders = False
> .Execute
> With .FoundFiles
> For i = 1 To .Count
> Set Xlbook = Workbooks.Open(.Item(i))
> Set Xlsheet = Xlbook.Worksheets("Logbook")
> ***traitement donnes du fichier***
> Set Xlsheet = Nothing
> Xlbook.Close
> Set Xlbook = Nothing
> Next i
> End With
> End With
> Application.AutomationSecurity = secAutomation
>
>