J'ai besoin d'avoir la possibilité d'appeler une deuxième macro à partir de la première. En clair, la première me permet d'enregistrer mon classeur , il me confirme par une mgbox l'enregistrement.
Ma demande : Une fois cliquer sur OK , une deuxième box me demande si je veux où pas (oui/non) enregistrer le classeur sur un DD externe. par le biais d'une deuxième macro.
Pourquoi ? Mon travail est utilisé par diverses personnes et la lettre des DD externes est la même.
Par manque de place, j'ai besoin d'avoir qu'un seul bouton de commande sur le classeur (et moi, je n'ai pas besoin d'enregistrer sur un DD externe). Dont le choix.
J'ai essayé avec la variable "Call " à la fin de ma première macro mais je ne suis pas doué en VBA même si je comprends le principe. Merci de votre aide.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveWorkbook.Save
If MsgBox(" Sauvegarde réussie." & Chr(10) & "Voulez vous une sauvegarde sur DD ?", vbYesNo, " Sauvegarde.") = vbYes Then
' Mettre ici le code de sauvegarde sur DD.
End If
End Sub
A mettre dans Thisworkbook.
' Mettre ici le code de sauvegarde sur DD. : Mettre soit la macro de sauvegarde en DD soit un Call Macro2.
J'ai besoin d'avoir la possibilité d'appeler une deuxième macro à partir de la première. En clair, la première me permet d'enregistrer mon classeur , il me confirme par une mgbox l'enregistrement. Une fois
J'ai besoin d'avoir la possibilité d'appeler une deuxième macro à partir de la première. En clair, la première me permet d'enregistrer mon classeur , il me confirme par une mgbox l'enregistrement. Une fois
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveWorkbook.Save
If MsgBox(" Sauvegarde réussie." & Chr(10) & "Voulez vous une sauvegarde sur DD ?", vbYesNo, " Sauvegarde.") = vbYes Then
' Mettre ici le code de sauvegarde sur DD.
End If
End Sub
A mettre dans Thisworkbook.
' Mettre ici le code de sauvegarde sur DD. : Mettre soit la macro de sauvegarde en DD soit un Call Macro2.
Le cross posting est peu apprécié s'il n'est pas dit explicitement dans la demande.
Voir notre charte point 2.10. ( Lien. )
Évitez de poser votre question sur plusieurs forums sur Internet, cette pratique s'appelle « cross posting" et elle peut être mal perçue par les membres répondant aux questions.
Je rajouterais juste un dernier point : Sur l'autre site la conversation s'arrête sans même une réponse de votre part.
Le minimum est de conclure un fil par un statut : Ca marche, Ca marche pas , Pourquoi ....
Juste un problème de respect envers des personnes qui essaient de vous aider.
Re,
Et comme on n'est pas rancunier, testez ces codes.
Si le disque externe est présent il sauvegarde sur les deux emplacements, si le disque externe est absent il ne fait rien, et donne un message sur les actions effectuées.
Modifiez le chemin du disque externe CheminDisqueExterne
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
CheminDisqueExterne = "D:\Essai\" ' Mettre chemin fichier sur disque externe, doit se terminer par "\"
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Save ' Sauvegarde dans le dossier courant
On Error Resume Next ' Si une erreur se produit on passe à la ligne suivante
ActiveWorkbook.SaveAs CheminDisqueExterne & ThisWorkbook.Name ' Sauvegarde sur le disque externe
If Err.Number = 0 Then ' Si Err=0 pas d'erreur donc fichier sauvegardé sur les deux emplacements
MsgBox "Sauvegarde réussie sur dossier interne et sur disque externe."
Else ' Si Err<>0 erreur donc pas de disque externe
MsgBox "Sauvegarde réussie sur dossier interne." & Chr(10) & "(Disque externe absent.)"
End If
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Et le même sans message car ce n'est pas obligatoirement utile :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
CheminDisqueExterne = "D:\Essai\" ' Mettre chemin fichier sur disque externe, doit se terminer par "\"
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Save ' Sauvegarde dans le dossier courant
On Error Resume Next ' Si une erreur se produit on passe à la ligne suivante
ActiveWorkbook.SaveAs CheminDisqueExterne & ThisWorkbook.Name ' Sauvegarde sur le disque externe
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Concernant vos remarques . Evidement je vous présente mes excuses. Je ne le savais pas. Donc, je ferais particulièrement attention. Je comprends parfaitement la démarche et vous avez totalement raison.
Re,
Et comme on n'est pas rancunier, testez ces codes.
Si le disque externe est présent il sauvegarde sur les deux emplacements, si le disque externe est absent il ne fait rien, et donne un message sur les actions effectuées.
Modifiez le chemin du disque externe CheminDisqueExterne
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
CheminDisqueExterne = "D:\Essai\" ' Mettre chemin fichier sur disque externe, doit se terminer par "\"
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Save ' Sauvegarde dans le dossier courant
On Error Resume Next ' Si une erreur se produit on passe à la ligne suivante
ActiveWorkbook.SaveAs CheminDisqueExterne & ThisWorkbook.Name ' Sauvegarde sur le disque externe
If Err.Number = 0 Then ' Si Err=0 pas d'erreur donc fichier sauvegardé sur les deux emplacements
MsgBox "Sauvegarde réussie sur dossier interne et sur disque externe."
Else ' Si Err<>0 erreur donc pas de disque externe
MsgBox "Sauvegarde réussie sur dossier interne." & Chr(10) & "(Disque externe absent.)"
End If
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Et le même sans message car ce n'est pas obligatoirement utile :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
CheminDisqueExterne = "D:\Essai\" ' Mettre chemin fichier sur disque externe, doit se terminer par "\"
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Save ' Sauvegarde dans le dossier courant
On Error Resume Next ' Si une erreur se produit on passe à la ligne suivante
ActiveWorkbook.SaveAs CheminDisqueExterne & ThisWorkbook.Name ' Sauvegarde sur le disque externe
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub