Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je suis entrain d'améliorer un programme excel et je rencontre un petit problème suite à l'instruction Option Explicit que j'ai introduit avant mes procédures de ThisWorkBook.
J'ai une procédure Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) qui fonctionne nickel et qui est en lien avec une procédure qui se nomme Sub Sauve().
Mes variables sont définies comme suit :
Dim Chemin As String, LieuTravail As String, LieuTravail2 As String, NomAbsent As String, NomAbsent2 As String, Fonction As String, Fonction2 As String, Mois As String, Annee As String, FichierSauve As String, OuiNon As Variant, m As Date
Dans la procédure Sub Sauve(), j'ai les instructions suivantes
Code:
...
Application.EnableEvents = False
On Error Resume Next
Cancel = True
....
Au moment du save, il y a plantage et j'ai un message "Erreur de compilation variable non définie" et l'instruction Cancel = True est mise en inverse vidéo.
J'ai apporteé une correction et j'ai déclaré Cancel as Boolean dans Sub Sauve(), mais est-ce correct ?
J'ai encore un petit soucis, toujours liés à Option Explicit.
Dans la procédure Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean), il y a plusieurs variables que je désire utiliser dans un Module. Les données des variables traitées ne sont pas "transférées" de la procédure Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean), vers ma procédure Sub Proprietes() qui est dans un Module. Pourtant les variables sont bien redéclarées dans le Module car sans ça, il y aurait un plantage.
Merci pour les fortiches du VBA de me donner un petit coup de main.
Option Explicit oblige à déclarer toutes les variables. Mais pour qu'une variable (comme Cancel) soit reprise avec sa valeur quand le module est appelé, écrire en haut du code du module : Public Cancel As Boolean, voire (je n'en suis pas sûr) simplement Public Cancel puisque Cancel est déclarée dans la macro événementielle.
Option Explicit oblige à déclarer toutes les variables. Mais pour qu'une variable (comme Cancel) soit reprise avec sa valeur quand le module est appelé, écrire en haut du code du module : Public Cancel As Boolean, voire (je n'en suis pas sûr) simplement Public Cancel puisque Cancel est déclarée dans la macro événementielle.
Je ne peut pas redéfinir Cancel en Public Cancel As Boolean car il est déjà déclaré dans la définition de la macro . J'ai est un message au moment de la compilation qui indique Attribut incorrect dans une procédure Sub ou Function.
De même si mes variables déclarées avec Dim sont mises Public c'est le même topo.
Je fais peut-être une erreur dans l'encodage mais laquelle.
J'ai laisser ma macro Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) tel quel.
Ma macro Sub Sauve () a été renommée Sub Sauve(Byref Cancel as Boolean).
Au moment de l'excution de la macro Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) qui appelle la macro Sauve(Byref Cancel as Boolean) il y a un plantage sur l'appel de cette macro et un message d'erreur indique Argument non facultatif.
Comme indiqué tout-à-l'heure, mes variables qui doivent être Public et utilisées dans des procédures différentes plantent toujours si je les déclare ainsi Public Variable1 as String, Variable2 as Date etc ...
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD