Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec Option Explicit

  • Initiateur de la discussion Initiateur de la discussion olivepao
  • Date de début Date de début

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 !

olivepao

XLDnaute Occasionnel
🙂 bonjour le forum

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.

A++
 
Re : Problème avec Option Explicit

Bonjour Olivepao,

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.

Merci de nous tenir au courant du résultat.

A+
 
Dernière édition:
Re : Problème avec Option Explicit


Salut Job75 Re le forum 🙂

Merci de ta réponse Job75.

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.

merci si tu as des précisions.

A+
 
Re : Problème avec Option Explicit

Bonjour à tous,

dans ce cas, il faut que tu fasses passer Cancel en paramètres à ta
Sub Sauve(Byref Cancel as Boolean)

ou alors tu déclares une variable Publique :
Public Cancel2 as Boolean

et dans le code Sauve tu modifie Cancel2
et dans Workbook_BeforeSave tu appelles Sauve puis tu affecte Cancel2 à Cancel
Cancel = Cancel2
 
Re : Problème avec Option Explicit

Salut tototiti 2008 🙂
Salut le forum 🙂

Je nage un peu !

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 ...

Merci si tu as une bouée de sauvetage

A++ (glou glou)
 
Re : Problème avec Option Explicit

lorsque tu appelles la sub Sauve, tu dois ajouter le booléen Cancel comme ça :

Sauve Cancel

le ByRef signifie que tu peux directement changer la valeur de la variable passée en paramètre, mais ne doit pas être répété lorsque tu l'appelles.

Je pense que tu devrais te renseigner sur :
la déclaration des variables
la portée des variables
le passage de paramètres dans les Sub et Function
 
Re : Problème avec Option Explicit

🙂 Re tototiti2008

Je viens de lire tes deux liens et je ne comprends pas grand chose.

Je ne trouve rien sur "comment rendre une variable Public".

Le lien qui me renvoie sur ByRef est encore un peu chinois pour mon savoir actuel.

Aurais-tu un plus d'explications (si tu as le temps) à me fournir.

Merci d'avance et bonne soirée (je vais faire une petite pause).

A++
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…