IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

erreur de déclaration sur une variable globale


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 59
    Points : 44
    Points
    44
    Par défaut erreur de déclaration sur une variable globale
    Bonjour,
    J'ai toujours l'erreur "variable Objet ou variable de bloc With non définie" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FeuilleEnr.Name = FeuilleEnrString
    malgré mes tentatives de modifications de la variable FeuilleEnr. Si quelqu'un peut m'aider, merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
    'Variable drapeau de modif de la feuille
    Dim ModifSheet As Boolean
     
    'Variable qui contiendra le nom de la feuille qui a été modifiée
    Dim FeuilleEnrString As String
     
    'Variable qui contiendra l'objet feuille qui a été modifiée
    Dim FeuilleEnr As Worksheet
     
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    'ThisWorkbook.CustomViews("UserForm1").Show
     
    'MsgBox "la valeur de ModifSheet vaut: " + CStr(ModifSheet)
     
    'Test si une feuille a été modifiée, on indique la date de modif sur la feuille concernée
    If ModifSheet = True Then
    MsgBox "la valeur de FeuilleEnrString vaut: " + FeuilleEnrString
    FeuilleEnr.Name = FeuilleEnrString
    FeuilleEnr.Cells(1, 2) = Date
    'Sh.Cells(1, 3) = Hour(Time)
    End If
     
    'Montrer le formulaire en mode non modal
    ENR_Fichier.Show vbModeless
     
    End Sub
     
     
    Private Sub Workbook_Open()
    'Variable drapeau de modif de la feuille
    ModifSheet = False
    'MsgBox "la valeur de ModifSheet vaut: " + CStr(ModifSheet)
    End Sub
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ModifSheet = True
    'MsgBox "la valeur de ModifSheet vaut: " + CStr(ModifSheet)
    'MsgBox "le nom de la feuille Sh qui a été modifiée est: " + Sh.Name
    FeuilleEnrString = Sh.Name
    'MsgBox "le nom de la feuille FeuilleENR qui a été modifiée est: " + FeuilleEnrString
    End Sub

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    C'est normal que ça bloque, car ta variable FeuilleEnr, tu ne lui attribues pas de valeur.

    Tu peux essayer ainsi pour ta dernière procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ModifSheet = True
    'MsgBox "la valeur de ModifSheet vaut: " + CStr(ModifSheet)
    'MsgBox "le nom de la feuille Sh qui a été modifiée est: " + Sh.Name
    Set FeuilleEnr = Worksheets("" & Sh.Name & "")
    FeuilleEnrString = Sh.Name
    'MsgBox "le nom de la feuille FeuilleENR qui a été modifiée est: " + FeuilleEnrString
    End Sub
    Chez moi ça semble marcher, par contre le FeuilleEnrString ne te sert pas à grand chose nom ? Si tu veux n'as qu'à utiliser dans tes MsgBox FeuilleEnr.Name, ça te fait gagner quelques lignes.

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Proprement (je présume)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
    Public shtChange As Worksheet
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not shtChange Is Nothing Then
       Application.EnableEvents = False
       shtChange.Cells(1, 2) = Date
       Application.EnableEvents = True
       Set shtChange = Nothing
    End If
    End Sub
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Set shtChange = Sh
    End Sub

Discussions similaires

  1. [WD18] Erreur d'affectation sur une variable numérique.
    Par PointCarreJo dans le forum WinDev
    Réponses: 3
    Dernier message: 06/10/2014, 17h19
  2. Déclaration d'une variable Globale
    Par peregna2007 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/07/2008, 11h24
  3. Réponses: 2
    Dernier message: 23/01/2008, 22h10
  4. déclaration d'une variable global
    Par piotrr dans le forum Général Python
    Réponses: 6
    Dernier message: 04/04/2007, 18h42
  5. Problème avec un pointeur global sur une variable manager
    Par sepullayer dans le forum C++/CLI
    Réponses: 12
    Dernier message: 26/03/2007, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo