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

Le
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 = "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
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
MichDenis
Le #19072391
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"
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
JMP
Le #19076241
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"
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




MichDenis
Le #19078451
| 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"
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"
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




JMP
Le #19079061
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"
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" >
> 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
>
>




Publicité
Poster une réponse
Anonyme