OVH Cloud OVH Cloud

Excel vba - Erreur étrange

5 réponses
Avatar
René Roy
Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un groupe de
fichiers plats situés dans un répertoire temporaire et qui dépose le fichier
*.zip dans un répertoire de travail. J'ai attaché cette macro à un bouton
dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro s'exécute
mais affiche un message d'erreur relié à WinZip "Error: No files were found
for this action that match your criteria - nothing to do.
(D:\Data\Test\Gen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:\Program Files\WinZip\"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "\Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "\T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que j'exécute la
macro jusqu'à ce point, çà va. À partir de là, si j'appuie <F5> pour
continuer l'exécution de la macro, le message d'erreur s'affiche. Mais si
j'appuie <F8> pour suivre l'exécution pas-à-pas, alors aucun problème, la
ligne "Shell..." s'exécute, je n'obtiens aucun message d'erreur et j'appuie
sur <F5> pour finaliser l'exécution sans problème.

Quelqu'un a-t'il une idée de ce qui ne va pas?

Merci de votre aide.

René R.

5 réponses

Avatar
Jacques93
Bonjour,

Ta macro s'appelle 'Sub compresse_et_supprimeDEL'
dans ton code on ne voit pas où tu supprimes les
fichiers, mais si c'est le cas, la commande Shell
s'executant de manière asynchrone, cela pourrait
expliquer ce comportement.

René Roy wrote:
Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un groupe de
fichiers plats situés dans un répertoire temporaire et qui dépose le fichier
*.zip dans un répertoire de travail. J'ai attaché cette macro à un bouton
dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro s'exécute
mais affiche un message d'erreur relié à WinZip "Error: No files were found
for this action that match your criteria - nothing to do.
(D:DataTestGen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:Program FilesWinZip"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que j'exécute la
macro jusqu'à ce point, çà va. À partir de là, si j'appuie <F5> pour
continuer l'exécution de la macro, le message d'erreur s'affiche. Mais si
j'appuie <F8> pour suivre l'exécution pas-à-pas, alors aucun problème, la
ligne "Shell..." s'exécute, je n'obtiens aucun message d'erreur et j'appuie
sur <F5> pour finaliser l'exécution sans problème.

Quelqu'un a-t'il une idée de ce qui ne va pas?

Merci de votre aide.

René R.



--
Cordialement,

Jacques.

Avatar
Oliv'
René Roy (sanssapm)> que je salut a écrit dans

Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un
groupe de fichiers plats situés dans un répertoire temporaire et qui
dépose le fichier *.zip dans un répertoire de travail. J'ai attaché
cette macro à un bouton dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro
s'exécute mais affiche un message d'erreur relié à WinZip "Error: No
files were found for this action that match your criteria - nothing
to do. (D:DataTestGen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:Program FilesWinZip"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que
j'exécute la macro jusqu'à ce point, çà va. À partir de là, si
j'appuie <F5> pour continuer l'exécution de la macro, le message
d'erreur s'affiche. Mais si j'appuie <F8> pour suivre l'exécution
pas-à-pas, alors aucun problème, la ligne "Shell..." s'exécute, je
n'obtiens aucun message d'erreur et j'appuie sur <F5> pour finaliser
l'exécution sans problème.

Quelqu'un a-t'il une idée de ce qui ne va pas?


essaye avec
toto = CheminWinZip & "winzip32.exe -a " & NomArchive & " " _
& QuelFichier
shell(toto)

ou shell(toto,1)

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
René Roy
Bonjour,

Merci Jacques. J'avais épuré la présentation de ma macro afin de ne pas
l'alourdir. J'ai effectivement une ligne de code qui supprime les fichiers
après la ligne "Shell ...".
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
Fichiers_a_Supprimer = Dossier_Output & "T*.del"
Kill Fichiers_a_Supprimer

Je viens de tester en mettant la ligne "Kill ..." en commentaire et çà
fonctionne numéro #1. Comment me suggérez-vous de m'y prendre pour supprimer
les fichiers sans être affecté par l'exécution asynchrone de la commande
Shell ?

Encore merci.

René R.


Bonjour,

Ta macro s'appelle 'Sub compresse_et_supprimeDEL'
dans ton code on ne voit pas où tu supprimes les
fichiers, mais si c'est le cas, la commande Shell
s'executant de manière asynchrone, cela pourrait
expliquer ce comportement.

René Roy wrote:
Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un groupe de
fichiers plats situés dans un répertoire temporaire et qui dépose le fichier
*.zip dans un répertoire de travail. J'ai attaché cette macro à un bouton
dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro s'exécute
mais affiche un message d'erreur relié à WinZip "Error: No files were found
for this action that match your criteria - nothing to do.
(D:DataTestGen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:Program FilesWinZip"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que j'exécute la
macro jusqu'à ce point, çà va. À partir de là, si j'appuie <F5> pour
continuer l'exécution de la macro, le message d'erreur s'affiche. Mais si
j'appuie <F8> pour suivre l'exécution pas-à-pas, alors aucun problème, la
ligne "Shell..." s'exécute, je n'obtiens aucun message d'erreur et j'appuie
sur <F5> pour finaliser l'exécution sans problème.

Quelqu'un a-t'il une idée de ce qui ne va pas?

Merci de votre aide.

René R.



--
Cordialement,

Jacques.




Avatar
Oliv'
Jacques93 que je salut a écrit dans

Bonjour,

Ta macro s'appelle 'Sub compresse_et_supprimeDEL'
dans ton code on ne voit pas où tu supprimes les
fichiers, mais si c'est le cas, la commande Shell
s'executant de manière asynchrone, cela pourrait
expliquer ce comportement.


c'était mon idée première mais je pensais à l'impression , que l'on peut
paramétrer en arrière plan ou pas
Donc Il faut ajouter un temporisateur voir ici :
http://frederic.sigonneau.free.fr/code/Tempos/AttendreFinMethodeShell.txt
http://frederic.sigonneau.free.fr/Tempos.htm

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

René Roy wrote:
Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un
groupe de fichiers plats situés dans un répertoire temporaire et qui
dépose le fichier *.zip dans un répertoire de travail. J'ai attaché
cette macro à un bouton dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro
s'exécute mais affiche un message d'erreur relié à WinZip "Error: No
files were found for this action that match your criteria - nothing
to do. (D:DataTestGen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:Program FilesWinZip"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que
j'exécute la macro jusqu'à ce point, çà va. À partir de là, si
j'appuie <F5> pour continuer l'exécution de la macro, le message
d'erreur s'affiche. Mais si j'appuie <F8> pour suivre l'exécution
pas-à-pas, alors aucun problème, la ligne "Shell..." s'exécute, je
n'obtiens aucun message d'erreur et j'appuie sur <F5> pour finaliser
l'exécution sans problème. Quelqu'un a-t'il une idée de ce qui ne va pas?

Merci de votre aide.

René R.




Avatar
Jacques93
Bonjour,

Tu peux essayer :

Dim objShell As Object

Set objShell = CreateObject("WScript.Shell")
objShell.Run TaCommande, 1, True ' ne rendra la main qu'une fois
la commande terminée.
MsgBox "Fini"
Kill ...
Set objShell = Nothing

Syntaxe de Run :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthrun.asp

René Roy wrote:
Bonjour,

Merci Jacques. J'avais épuré la présentation de ma macro afin de ne pas
l'alourdir. J'ai effectivement une ligne de code qui supprime les fichiers
après la ligne "Shell ...".
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
Fichiers_a_Supprimer = Dossier_Output & "T*.del"
Kill Fichiers_a_Supprimer

Je viens de tester en mettant la ligne "Kill ..." en commentaire et çà
fonctionne numéro #1. Comment me suggérez-vous de m'y prendre pour supprimer
les fichiers sans être affecté par l'exécution asynchrone de la commande
Shell ?

Encore merci.

René R.



Bonjour,

Ta macro s'appelle 'Sub compresse_et_supprimeDEL'
dans ton code on ne voit pas où tu supprimes les
fichiers, mais si c'est le cas, la commande Shell
s'executant de manière asynchrone, cela pourrait
expliquer ce comportement.

René Roy wrote:

Bonjour à tous,

J'ai une petite macro vba qui compresse dans un fichier *.zip un groupe de
fichiers plats situés dans un répertoire temporaire et qui dépose le fichier
*.zip dans un répertoire de travail. J'ai attaché cette macro à un bouton
dans une feuille de calcul.

Mon problème est celui-ci. Quand je clique le bouton, la macro s'exécute
mais affiche un message d'erreur relié à WinZip "Error: No files were found
for this action that match your criteria - nothing to do.
(D:DataTestGen_Cubes.zip).

La macro ressemble à ceci:
Sub compresse_et_supprimeDEL()
' Compresse les fichiers T*.DEL dans un ZIP file
Application.ScreenUpdating = False
FichierTemp = Environ$("Temp")
CheminWinZip = "C:Program FilesWinZip"
Application.GoTo reference:="Data_Output"
Dossier_Output_Final = ActiveCell.Value
'Nom du dossier à compresser
NomArchive = Dossier_Output_Final & "Gen_Cubes.zip"
Dossier_Output = Environ$("Temp")
QuelFichier = Dossier_Output & "T*.del"
Shell (CheminWinZip & "winzip32.exe -a " & NomArchive & " " &
QuelFichier)
End Sub

Si je place un point d'arrêt sur la ligne "Shell ..." et que j'exécute la
macro jusqu'à ce point, çà va. À partir de là, si j'appuie <F5> pour
continuer l'exécution de la macro, le message d'erreur s'affiche. Mais si
j'appuie <F8> pour suivre l'exécution pas-à-pas, alors aucun problème, la
ligne "Shell..." s'exécute, je n'obtiens aucun message d'erreur et j'appuie
sur <F5> pour finaliser l'exécution sans problème.

Quelqu'un a-t'il une idée de ce qui ne va pas?

Merci de votre aide.

René R.



--
Cordialement,

Jacques.





--
Cordialement,

Jacques.