MsgBox toujours affiché pour YOda
Résolu/Fermé
A voir également:
- MsgBox toujours affiché pour YOda
- Le clavier de mon telephone ne s'affiche plus - Guide
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image. quel mot apparaît en b1 ? - Forum Excel
- Messenger photo ne s'affiche pas - Forum Facebook Messenger
- Mon anniversaire sur facebook ne s'affiche pas - Forum Facebook
- Quel fonction faire en b1 par rapport à a1 - Forum Excel
7 réponses
Bonjour,
Avec une boite MsgBox ça ne marche pas.
Tu dois faire un formulaire UserForm, et rajouter une procédure spéciale.
Dans la fenêtre VBAProject, click droit, Insertion , Userform.
Tu dimensionne ton UserForm et tu lui ajoutes un Label au milieu, (dans la boite à outils tu click sur le A , ensuite tu click deux points sur le UserForm).
Tu modifies le texte par défaut et inscris ton propre message. tu redimenssionnes pour voir tout le texte.
Si tu arrives à faire déjà ça, je te dirais ce qu'il fau faire ensuite.
Tiens moi au courant.
Avec une boite MsgBox ça ne marche pas.
Tu dois faire un formulaire UserForm, et rajouter une procédure spéciale.
Dans la fenêtre VBAProject, click droit, Insertion , Userform.
Tu dimensionne ton UserForm et tu lui ajoutes un Label au milieu, (dans la boite à outils tu click sur le A , ensuite tu click deux points sur le UserForm).
Tu modifies le texte par défaut et inscris ton propre message. tu redimenssionnes pour voir tout le texte.
Si tu arrives à faire déjà ça, je te dirais ce qu'il fau faire ensuite.
Tiens moi au courant.
Yoda, je viens de faire un UserForm avec le texte
ENREGISTREMENT DU CLASSEUR
que faire maintenant?
ENREGISTREMENT DU CLASSEUR
que faire maintenant?
Maintenat tu vas copier / coller cette procedure tout au début de ton module ou tu as ta macro.
Ensuite tu remplaces ta macro par celle-ci un peu modifiée, dis moi si ça marche.
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Const STILL_ACTIVE = &H103 Private Const PROCESS_QUERY_INFORMATION = &H400 Public Sub ShellWait(ByVal JobToDo As String) Dim hProcess As Long, RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Sleep 100 Loop While RetVal = STILL_ACTIVE End Sub
Ensuite tu remplaces ta macro par celle-ci un peu modifiée, dis moi si ça marche.
Sub CopieClasseurXPMimi() 'enregistre le classeur Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS" Application.EnableEvents = False ActiveWorbook.Save Application.EnableEvents = True 'sauve sur disque extérieur H DEBUT: Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _ & "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation) If Rep = vbOK Then On Error GoTo ERR1 'test si le lecteur H:\ est prêt ChDir ("H:\") On Error GoTo 0 'afficher ton message UserForm1.Show (0) 'Nom des fichiers origine et destination Orig = "D:\DépMalAs\DépMimi.xls" Dest = "H:\DépMimi.xls_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh\Hmm") 'ne pas modifier ces 2 lignes commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34) ShellWait (commandeDOS) 'chacher ton message UserForm1.Hide MsgBox "Sauvegarde effectuée avec succès" Else MsgBox "Sauvegarde annulée" End If Call Auto_Close ActiveSheet.Protect Application.Quit Exit Sub ERR1: MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical Resume DEBUT End Sub
Bonjour Yoda,
L'essai de la macro complète donne:Impossible de trouver la macro
"DépMimi.Xls!CopieClasseurMimi"
Lorsque je supprime les lignes Private,Public, hProcess à End sub
la macro fontionne en affichant UserForm1"ENREGITREMENT CLASSEUR EN COURS" ainsi que MsgBox "ENREGISTREMENT CLASSEUR EN COURS" et bouton OK
un clic sur OK Fait disparaitre MsgBox tandis que UserForm1 reste affiché pendant que le classeur s'enregistre pour disparaitre avec" Sauvegarde effectuée avec succès"
Après contôle sur H: la copy est bien effectuée.
L'essai de la macro complète donne:Impossible de trouver la macro
"DépMimi.Xls!CopieClasseurMimi"
Lorsque je supprime les lignes Private,Public, hProcess à End sub
la macro fontionne en affichant UserForm1"ENREGITREMENT CLASSEUR EN COURS" ainsi que MsgBox "ENREGISTREMENT CLASSEUR EN COURS" et bouton OK
un clic sur OK Fait disparaitre MsgBox tandis que UserForm1 reste affiché pendant que le classeur s'enregistre pour disparaitre avec" Sauvegarde effectuée avec succès"
Après contôle sur H: la copy est bien effectuée.
Non, tu dois remettre ce que t'as enlevé sans rien changer.
Fais attention, dans ce que je t'ai donné, la macro s'appelle CopieClasseurXPMimi et non CopieClasseurMimi
La macro ShellWait sert justement à faire attendre le programme jusqu'a ce que la commande copy soit achevée.
Tu as bien copié ShellWait (commandeDOS) et pas Shell.
Verifie bien le nom des macros et refais un essai.
Fais attention, dans ce que je t'ai donné, la macro s'appelle CopieClasseurXPMimi et non CopieClasseurMimi
La macro ShellWait sert justement à faire attendre le programme jusqu'a ce que la commande copy soit achevée.
Tu as bien copié ShellWait (commandeDOS) et pas Shell.
Verifie bien le nom des macros et refais un essai.
Yoda, désolé j'ai supprimé ' mis au début des lignes Private à End sub et toujours:impossible de trouver la macro DépMimi.xls!CopieClasseurXPMimi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yoda, voici la macro:
'
Sub CopieClasseurXPMimi()
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub
'enregistre le classeur
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez vérifier que le disque H: est branché", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
' test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher message
UserForm1.Show (0)
MsgBox "ENREGISTREMENT CLASSEUR EN COURS"
'MsgBox Format(Now() - vChrono, "h:mm:ss"), vbOK, "PATIENTEZ"
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls" & " " & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh\Hmm")
'ne pas mofifier ces 2 lignes
commandeDos = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
ShellWait (commandeDos)
'cacher message
UserForm1.Hide
'On Error GoTo 0
MatailleD = FileLen("D:\DépMalAs\DépMimi.xls")
ChDir ("H:\")
MatailleH = FileLen("\DépMimi.xls")
MsgBox "Sauvegarde effectuée avec succès" & " " & MatailleD & " " & "octets" _
& " " & MatailleH
' MsgBox "taille fichier sur disque H" = MatailleH
Else
MsgBox " Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
'
Sub CopieClasseurXPMimi()
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub
'enregistre le classeur
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez vérifier que le disque H: est branché", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
' test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher message
UserForm1.Show (0)
MsgBox "ENREGISTREMENT CLASSEUR EN COURS"
'MsgBox Format(Now() - vChrono, "h:mm:ss"), vbOK, "PATIENTEZ"
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls" & " " & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh\Hmm")
'ne pas mofifier ces 2 lignes
commandeDos = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
ShellWait (commandeDos)
'cacher message
UserForm1.Hide
'On Error GoTo 0
MatailleD = FileLen("D:\DépMalAs\DépMimi.xls")
ChDir ("H:\")
MatailleH = FileLen("\DépMimi.xls")
MsgBox "Sauvegarde effectuée avec succès" & " " & MatailleD & " " & "octets" _
& " " & MatailleH
' MsgBox "taille fichier sur disque H" = MatailleH
Else
MsgBox " Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
Forcement, tel que c'est là ça peut pas marcher, tu as imbriqué les deux procédures.
Je te remets tout dans l'ordre. Fais un copier / coller tel que c'est ci-dessous.
Dis moi si ça marche. A+
Je te remets tout dans l'ordre. Fais un copier / coller tel que c'est ci-dessous.
Dis moi si ça marche. A+
'Déclaration de variables globales, ne pas modifier Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Const STILL_ACTIVE = &H103 Private Const PROCESS_QUERY_INFORMATION = &H400 'Procédure ShellWait, ne pas modifier Public Sub ShellWait(ByVal JobToDo As String) Dim hProcess As Long, RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Sleep 100 Loop While RetVal = STILL_ACTIVE End Sub 'Ta procédure d'enregistrement Sub CopieClasseurXPMimi() 'enregistre le classeur Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS" Application.EnableEvents = False ActiveWorbook.Save Application.EnableEvents = True 'sauve sur disque extérieur H DEBUT: Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _ & "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation) If Rep = vbOK Then On Error GoTo ERR1 'test si le lecteur H:\ est prêt ChDir ("H:\") On Error GoTo 0 'afficher ton message UserForm1.Show (0) 'Nom des fichiers origine et destination Orig = "D:\DépMalAs\DépMimi.xls" Dest = "H:\DépMimi.xls_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh\Hmm") 'ne pas modifier ces 2 lignes commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34) ShellWait (commandeDOS) 'chacher ton message UserForm1.Hide MsgBox "Sauvegarde effectuée avec succès" Else MsgBox "Sauvegarde annulée" End If Call Auto_Close ActiveSheet.Protect Application.Quit Exit Sub ERR1: MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical Resume DEBUT End Sub
Bonjour Yoda,
L'essai de cette macro donne: Impossible de trouver la macro DépMimi.xls!Copie ClasseurXPMimi et
en quittant
Seul des commentaires peuvent apparaître après End Sub ou EndFonction ou End Property
En dessous le copier/coller de la Macro en place, j'espère ne pas y avoir
fait d'erreurs
A+
Sub CopieClasseurXPMimi()
'Déclaration de variables globales, ne pas modifier
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
'Procédure ShellWait, ne pas modifier
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
'Ta procédure d'enregistrement
'enregistre le classeur
Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
Application.EnableEvents = False
'ActiveWorbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
'test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher ton message
UserForm1.Show (0)
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh\Hmm")
'ne pas modifier ces 2 lignes
commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
ShellWait (commandeDOS)
'chacher ton message
UserForm1.Hide
MsgBox "Sauvegarde effectuée avec succès"
Else
MsgBox "Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
L'essai de cette macro donne: Impossible de trouver la macro DépMimi.xls!Copie ClasseurXPMimi et
en quittant
Seul des commentaires peuvent apparaître après End Sub ou EndFonction ou End Property
En dessous le copier/coller de la Macro en place, j'espère ne pas y avoir
fait d'erreurs
A+
Sub CopieClasseurXPMimi()
'Déclaration de variables globales, ne pas modifier
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
'Procédure ShellWait, ne pas modifier
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
'Ta procédure d'enregistrement
'enregistre le classeur
Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
Application.EnableEvents = False
'ActiveWorbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
'test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher ton message
UserForm1.Show (0)
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh\Hmm")
'ne pas modifier ces 2 lignes
commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
ShellWait (commandeDOS)
'chacher ton message
UserForm1.Hide
MsgBox "Sauvegarde effectuée avec succès"
Else
MsgBox "Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
Tu as refait exactement les mêmes erreurs.
Je ne vais pas recopier encore une fois. Reprends intégralement ce que je t'ai mis dans le message précédent. Voici comment ça doit être structuré:
D'abord il y a la partie déclaration des variables globales
'Déclaration de variables globales, ne pas modifier
Private Declare Function .....
......
Esuite la Procédure ShellWait
'Procédure ShellWait, ne pas modifier
Public Sub ShellWait(ByVal JobToDo As String)
....
....
End Sub
Enfin ta procédure
'Ta procédure d'enregistrement
Sub CopieClasseurXPMimi()
'enregistre le classeur
Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
...
...
End Sub
Or tu n'a pas respecté cette structure. Tu as commencé par Sub CopieClasseurXPMimi()
à la suite de quoi tu as mélangé les déclarations et la procédure ShellWait, alors que ce sont trois parties biens distinctes. Voilà pour les explications.
Supprime tout ton code et fait un copié/collé de ce que je t'ai envoyé tel quel, tu verras que ça marchera.
A+.
Je ne vais pas recopier encore une fois. Reprends intégralement ce que je t'ai mis dans le message précédent. Voici comment ça doit être structuré:
D'abord il y a la partie déclaration des variables globales
'Déclaration de variables globales, ne pas modifier
Private Declare Function .....
......
Esuite la Procédure ShellWait
'Procédure ShellWait, ne pas modifier
Public Sub ShellWait(ByVal JobToDo As String)
....
....
End Sub
Enfin ta procédure
'Ta procédure d'enregistrement
Sub CopieClasseurXPMimi()
'enregistre le classeur
Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
...
...
End Sub
Or tu n'a pas respecté cette structure. Tu as commencé par Sub CopieClasseurXPMimi()
à la suite de quoi tu as mélangé les déclarations et la procédure ShellWait, alors que ce sont trois parties biens distinctes. Voilà pour les explications.
Supprime tout ton code et fait un copié/collé de ce que je t'ai envoyé tel quel, tu verras que ça marchera.
A+.
Bonjour Yoda,
La macro copier/coller foctionne à condition de supprimer ActiveWorbook.save pourquoi?
Inconvénient, la fermeture demande "Voulez-vous enregistrer le classeur OUI NON"
la macro ci dessous fonctionne parfaitement et enregitre le classeur au début.
Sub CopieClasseurXPMimi()
'enregistre le classeur
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez vérifier que le disque H: est branché", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
' test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher message
UserForm1.Show (0)
MsgBox "ENREGISTREMENT CLASSEUR EN COURS"
'MsgBox Format(Now() - vChrono, "h:mm:ss"), vbOK, "PATIENTEZ"
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls" & " " & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh\Hmm")
'ne pas mofifier ces 2 lignes
commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
Shell (commandeDOS)
'cacher message
UserForm1.Hide
On Error GoTo 0
MatailleD = FileLen("D:\DépMalAs\DépMimi.xls")
ChDir ("H:\")
MatailleH = FileLen("\DépMimi.xls")
MsgBox "Sauvegarde effectuée avec succès" & " " & MatailleD & " " & "octets" _
& " " & MatailleH
Else
MsgBox " Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
La macro copier/coller foctionne à condition de supprimer ActiveWorbook.save pourquoi?
Inconvénient, la fermeture demande "Voulez-vous enregistrer le classeur OUI NON"
la macro ci dessous fonctionne parfaitement et enregitre le classeur au début.
Sub CopieClasseurXPMimi()
'enregistre le classeur
DEBUT:
Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
& "Veuillez vérifier que le disque H: est branché", vbOKCancel + vbExclamation)
If Rep = vbOK Then
On Error GoTo ERR1
' test si le lecteur H:\ est prêt
ChDir ("H:\")
On Error GoTo 0
'afficher message
UserForm1.Show (0)
MsgBox "ENREGISTREMENT CLASSEUR EN COURS"
'MsgBox Format(Now() - vChrono, "h:mm:ss"), vbOK, "PATIENTEZ"
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
'sauve sur disque extérieur H
'Nom des fichiers origine et destination
Orig = "D:\DépMalAs\DépMimi.xls"
Dest = "H:\DépMimi.xls" & " " & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh\Hmm")
'ne pas mofifier ces 2 lignes
commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
Shell (commandeDOS)
'cacher message
UserForm1.Hide
On Error GoTo 0
MatailleD = FileLen("D:\DépMalAs\DépMimi.xls")
ChDir ("H:\")
MatailleH = FileLen("\DépMimi.xls")
MsgBox "Sauvegarde effectuée avec succès" & " " & MatailleD & " " & "octets" _
& " " & MatailleH
Else
MsgBox " Sauvegarde annulée"
End If
Call Auto_Close
ActiveSheet.Protect
Application.Quit
Exit Sub
ERR1:
MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
Resume DEBUT
End Sub
Je ne comprend pas ce que tu fais.
Je me creuse la tête pour dénicher une macro ShellWait qui arrête l'execution de la macro CopieClasseurXPMimi en laissant UserForm1 affiché le temps de la sauvegarde.
Finalement tu reviens à la macro d'origine avec Shell mais en laissant quand même l'affichage de UserForm1, tu rajoutes des instructions que t'as trouvé par-ci par-là...
On s'en sortira pas. Je laisse tomber.
Bonne continuation.
Je me creuse la tête pour dénicher une macro ShellWait qui arrête l'execution de la macro CopieClasseurXPMimi en laissant UserForm1 affiché le temps de la sauvegarde.
Finalement tu reviens à la macro d'origine avec Shell mais en laissant quand même l'affichage de UserForm1, tu rajoutes des instructions que t'as trouvé par-ci par-là...
On s'en sortira pas. Je laisse tomber.
Bonne continuation.