Problème portée variable

Bonjour à tous

J'espère que vous passez un bon week end. Voilà, je vous sollicite car j'ai un petit soucis :

Je n'arrive pas à récupérer la valeur d'une variable se trouvant dans le code d'une feuille.

En clair : - Une variable se trouve dans ma procédure vba "Feuille1"

- J'en ai besoin dans Thisworkbook, mais je ne peux pas y accéder

Les variables globales ne peuvent visiblement pas être déclarées dans ces 2 objets/feuilles mais uniquement dans des modules.

Connaissez vous la solution à ce problème?

Merci beaucoup d'avance.

Bonjour,

Une variable publique doit être déclarée dans un module standard...

Sinon, quelques pistes ici :

https://forum.excel-pratique.com/excel/variables-publiques-t51160.html

Bonne journée

Bonjour cousinhub,

hum en fait c'est un peu plus tordu que ça...

Dans un module j'ai ça :

Sub date_du_jour()

texte = "VERSION DU : "
quand = WorksheetFunction.Proper(Format(Date, "dddd d mmmm yyyy"))
[A1] = texte & quand & " à " & Format(Now, "hh\h mm\m ss\s")

End Sub

Dans une feuille, j'ai ça (d'ailleurs merci à toi) :

Dim cel As Variant

Sub Worksheet_SelectionChange(ByVal Target As Range)
 cel = Target.Value
End Sub

Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    If Target.Value <> cel Then
    modif = True
    End If
End Sub

et enfin dans ThisWorkbook j'ai ça :

Dim modif As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If modif = True Then
        date_du_jour
    End If

End Sub

nb: Je m'explique, je n'ai pas tout mis dans la feuille car je veux pouvoir annuler les modifications du fichier. Si je lançais ma macro à chaque changement de cellules, je ne pourrais pas "annuler" les opérations, alors qu'en modifiant ma cellule A1 à la fermeture, ça règle le problème

Donc voilà Dans la procèdure de thisworkbook, je n'ai pas pu récupérer la valeur de mon booléen...

RE-,

Tu mets :

Public modif As Boolean

Dans un module standard

Peut-être?

hum ça marche parfaitement.......Je suis super naze...Je n'avais pas pensé à ça...merci encore....

Bonjour,

Les explications sont dans le code ci-dessous mais je les reprends.

La variable doit être déclarée "Public" dans le module du classeur sinon, elle sera invisible des autres modules et ensuite, lui faire référence comme pour une propriété (avec le point) :

Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

    If Target.Value <> cel Then

        'il faut la déclarer "Public" dans la module du classeur (sinon, invisible)
        'et ensuite y faire référence comme à une propriété
        ThisWorkbook.modif = True

    End If

End Sub

Hervé.

Merci hervé pour ces précisions, je ne le savais pas.

Bon we à toi

Rechercher des sujets similaires à "probleme portee variable"