Problème d'execution

ddlenrager

XLDnaute Nouveau
salut le forum,
En général, je ne post pas car je trouve toujours les réponses en parcourant le forum mais là j'ai rien trouvé. Voici mon problème, j'ai fait un code qui, en fonction d'un plage défini, renvoi chaque valeur de chaque cellule vers un fichier texte afin d'imprimer celui-ci avec une imprimante Zebra. tout fonctionne sauf la fin lorsque je demande la suppression du fichier texte créer, là, j'ai une message m'indiquant "Execution interrompue". lorsque j'essaie mon code en pas à pas détaillé celui-ci fonctionne ?????
quelqu'un aurait il eu le même problème
ci joint le code :

Option Explicit
Dim Cible As Integer
Dim cell As Variant
Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Sub excelVersFichierTexte()
Dim Cible As Integer
Cible = FreeFile
'ouvre ou créer le .bat et copie des chemins d'impressions
Open "\\f-hapy\home1$\" & user & "\MyDocs\essai.bat" For Output As #Cible
Print #Cible, "Mode COM1: BAUD=9600 DATA=8 xon=on dtr=off rts=off"
Print #Cible, "copy \\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt com1:"
Close #Cible
End Sub
Private Function user()
'récupere l'IPN de l'utilisateur
user = Application.UserName
End Function
Sub ZPL()
'Création du .txt avec intégration du code ZPL
Cible = FreeFile
Open "\\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt" For Append As #Cible
Print #Cible, "^XA"
'origine de l'étiquette x;y
Print #Cible, "^LH50,50"
'définiton, du contraste
Print #Cible, "^MD20"
Print #Cible, "^FO25,85^A0R,150,100^FD" & cell & "^FS"
Print #Cible, "^FO25,50^GB200,420,2^FS"
'définition du nombre d'étiquettes à imprimer
Print #Cible, "^PQ1,0,1,Y"
Print #Cible, "^XZ"
Close #Cible
End Sub
Sub maplage()
Dim maplage As Variant
'boucle sur le nombre de cellule dans la plage
maplage = Range("a1:" & Range("a1").End(xlDown).Address)
For Each cell In maplage
Call ZPL
Next
Shell ("\\f-hapy\home1$\" & user & "\MyDocs\" & "essai.bat")
Call delete
End Sub
Sub delete()
Application.Wait (Now + TimeValue("0:0:10"))
Kill ("\\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt")
End Sub
 

Gorfael

XLDnaute Barbatruc
Re : Problème d'execution

ddlenrager à dit:
salut le forum,
En général, je ne post pas car je trouve toujours les réponses en parcourant le forum mais là j'ai rien trouvé. Voici mon problème, j'ai fait un code qui, en fonction d'un plage défini, renvoi chaque valeur de chaque cellule vers un fichier texte afin d'imprimer celui-ci avec une imprimante Zebra. tout fonctionne sauf la fin lorsque je demande la suppression du fichier texte créer, là, j'ai une message m'indiquant "Execution interrompue". lorsque j'essaie mon code en pas à pas détaillé celui-ci fonctionne ?????
quelqu'un aurait il eu le même problème
ci joint le code :

Option Explicit
Dim Cible As Integer
Dim cell As Variant
Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Sub excelVersFichierTexte()
Dim Cible As Integer
Cible = FreeFile
'ouvre ou créer le .bat et copie des chemins d'impressions
Open "\\f-hapy\home1$\" & user & "\MyDocs\essai.bat" For Output As #Cible
Print #Cible, "Mode COM1: BAUD=9600 DATA=8 xon=on dtr=off rts=off"
Print #Cible, "copy \\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt com1:"
Close #Cible
End Sub
Private Function user()
'récupere l'IPN de l'utilisateur
user = Application.UserName
End Function
Sub ZPL()
'Création du .txt avec intégration du code ZPL
Cible = FreeFile
Open "\\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt" For Append As #Cible
Print #Cible, "^XA"
'origine de l'étiquette x;y
Print #Cible, "^LH50,50"
'définiton, du contraste
Print #Cible, "^MD20"
Print #Cible, "^FO25,85^A0R,150,100^FD" & cell & "^FS"
Print #Cible, "^FO25,50^GB200,420,2^FS"
'définition du nombre d'étiquettes à imprimer
Print #Cible, "^PQ1,0,1,Y"
Print #Cible, "^XZ"
Close #Cible
End Sub
Sub maplage()
Dim maplage As Variant
'boucle sur le nombre de cellule dans la plage
maplage = Range("a1:" & Range("a1").End(xlDown).Address)
For Each cell In maplage
Call ZPL
Next
Shell ("\\f-hapy\home1$\" & user & "\MyDocs\" & "essai.bat")
Call delete
End Sub
Sub delete()
Application.Wait (Now + TimeValue("0:0:10"))
Kill ("\\f-hapy\home1$\" & user & "\MyDocs\" & "Test.txt")
End Sub
Salut
Si ça marche en pas-à-pas et pas en automatique, c'est que soit en manuel tu fais une manip que tes macros ne font pas (par exemple un changement de feuille active)
Soit tu as un problème de délai

Pour savoir quelle macro bloque, tu peux essayer un fonctionnement semi-automatique en mettant un point d'arrêt sur chacune des en-tête de macros, et en utilisant la touche F5 au lieu de F8
Si tu n'as pas l'erreur, crée une gestion d'erreur pour chaque macro (on error goto...) et dans la gestion des erreurs, tu mets une référence (ou un point d'arrêt) pour savoir laquelle coince
A+
 

Jam

XLDnaute Accro
Re : Problème d'execution

Salut ddlenrager, Gorfael,

J'ai pas vraiment regarder ton code, mais comme tu effaces un fichier je pense qu'en mode pas-à-pas tu lui donne le temps de s'effacer alors qu'en exécution il n'a pas le temps de s'effacer avant le passage à une autre instruction.

Il faudrait y rajouter un bout de code rendant temporairement la main à l'OS malheureusement j'ai un vieux trou de mémoire.
Je pense cependant qu'un gentil membre du forum pourra t'aider (et moi aussi en l'occurence).

Bon courage,
 

Discussions similaires

Réponses
0
Affichages
274
Réponses
1
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 492
Messages
2 088 912
Membres
103 983
dernier inscrit
AlbertCouillard