Les Variables Globales font des siennes

Bourakrak

XLDnaute Nouveau
Bonjour le forum,

J'ai un léger soucis avec une variable globale que j'utilise.

En effet, j'ai créé une variable "Public versionXL As Integer" dans un module.
À l'ouverture du classeur, la variable s'initialise avec "versionXL = Val(Application.Version)"

Comme je travaille sur Excel 2003, je récupère versionXL = 11

Donc ça marche très bien au début, puis à partir d'un moment et pour une raison que j'ignore versionXL devient 0.

J'ai bien vérifié toutes mes lignes de codes et à part à l'ouverture du classeur, versionXL n'est appelé que dans des expressions de condition. Ma variable ne devrait donc pas changer de valeur.

Donc je me demandais si une variable globale avait une durée de vie...

Merci, et bonne journée.
 

pierrejean

XLDnaute Barbatruc
Re : Les Variables Globales font des siennes

Bonjour Bourakrak

A ma connaissance la durée de vie d'une variable publique n'est pas limitée
Et je parierais gros qu'elle ne passe à 0 que par suite d'une maladresse dans le code
Sans voir celui-ci difficile d'en dire plus
 

Bourakrak

XLDnaute Nouveau
Re : Les Variables Globales font des siennes

Bonjour pierrejean et merci pour ta réponse.

Pour des raisons de confidentialité, je ne peux joindre mon classeur.

Par contre je peux afficher les lignes de codes où j'appelle ma variable (il y en a peu)

Macro lancé à l'ouverture du fichier pour prévenir des différences de versions
Code:
Sub testversionxl()

    Dim versionoriginal As String
    versionoriginal = "Excel (2003) version 11.0"
    
    Dim phrase As String
    Select Case versionXL
        Case 11
            phrase = "Application élaborée sous : " & versionoriginal & vbCrLf _
                    & "Vous utilisez actuellement : Excel (2003) version 11.0"
        Case 12
            phrase = "Application élaborée sous : " & versionoriginal & vbCrLf _
                    & "Vous utilisez actuellement : Excel (2007) version 12.0"
        Case 14
            phrase = "Application élaborée sous : " & versionoriginal & vbCrLf _
                    & "Vous utilisez actuellement : Excel (2010) version 14.0"
        Case Else
            phrase = "Application élaborée sous : " & versionoriginal & vbCrLf _
                    & "Vous utilisez actuellement une autre version !"
    End Select
    
    MsgBox phrase
End Sub

Et une partie d'un code pour la création d'un graphique, où j'ai besoin de supprimer une légende, mais l'ordre de légende entre 2003 et 2010 (je n'ai pas testé sur 2007) est différent.

Code:
If versionXL = 11 Then
        .Legend.LegendEntries(2).Delete
ElseIf versionXL = 12 Or versionXL = 14 Then
        .Legend.LegendEntries(3).Delete
End If

Ce sont les deux seules utilisation de ma variable versionXL en dehors de l'initialisation.
 

pierrejean

XLDnaute Barbatruc
Re : Les Variables Globales font des siennes

Re

Il n'y a pas, à priori , matiere à ramener versionXL à 0 si la declaration Public a bien été faite dans un module standard (de même que l'utilisation ; mais là je n'ai pas de certitude : personnellement je procede toujours ainsi)
 

Bourakrak

XLDnaute Nouveau
Re : Les Variables Globales font des siennes

Bonjour,

Finalement je rappelle la fonction Application.Version quand j'en ai besoin, c'est pas optimal vu que c'est vraiment la seule valeur qui n'a pas à changer de l'ouverture à la fermeture du classeur, mais au moins je n'ai plus ce 0 qui vient me narguer (enfin j'espère, si le problème revient, c'est qu'Excel 2003 lui-même considère au bout d'un moment après l'ouverture qu'il est de version 0...)

Merci quand même pour ton aide pierrejean.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz