Comment récupérer le contenu d'une variable global dans une feuille excel?

philmascio

XLDnaute Nouveau
Bonjour,

Dans un module VBA, j'ai déclaré une variable x en "global" pour qu'elle continue à exister après l'exécution du code qui la renseigne.
Soit x=100

Comment récupérer et utiliser le contenu de cette variable dans une feuille excel (en dehors de l'exécution d'un code) ?
Si j'écris =x dans une cellule, ça ne retourne pas 100.

Question 2 (la principale question): est-il possible d'utiliser des variables tableaux à deux dimensions à la place d'une plage nommée pour travailler directement dessus à partir d'une feuille ?
Je souhaite placer des données en mémoire et travailler dessus (avec des fonctions de recherche principalement) pour accélérer le fonctionnement.
En l'occurrence, ce tableau est une liste triée et dédoublonnée construite à partir d'une première liste inscrite dans une feuille du classeur et ça m'éviterait de réécrire "physiquement" cette liste à chaque fois que je dois y faire appel.

Pour être encore plus explicite, je veux reprendre la formule suivante
=DECALER(HLN;EQUIV(C447;HLP;0)-1;;NB.SI(HLP;C447))
écrite dans Données\Validation comme source d'une liste déroulante
en utilisant des variables tableaux à la place des plages nommées HLN et HLP.

Qui relèvera le défi ? ;)
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Comment récupérer le contenu d'une variable global dans une feuille excel?

Bonsoir,
j'ai l'impression que tu t'embarques dans une usine à gaz ou alors je n'ai pas compris ce que tu cherches à faire mais ne sachant pas où tu veux en venir peut-être que je me trompe.
Un essai vite fait concernant ta 1ère question :
Dans un module
Code:
Option Explicit
Public toto As Integer
Sub a()
toto = 100
MsgBox toto
End Sub
Function tutu()
Application.Volatile
tutu = toto
End Function
Dans la feuille en A1 taper =tutu()
La fonction sera mise à jour dès la prochaine intervention sur la feuille.
Si l'on veut avoir l'actualisation dès le retour dans la feuille, placer dans le module de la feuille 1 :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value <> 0 Then Application.Calculate
End Sub

Mais bon le plus simple est quand même d'actualiser A1 à la fin de ton code directement...en fait je ne comprends toujours pas l'intérêt mais peut-être suis-je à côté de la plaque.
Pour tes autres questions un petit fichier exemple explicite serait apprécié.
A+

Edit : je n'ai pas essayer mais peut-être passer par une cellule nommée qui récupérerait la valeur de la variable.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
536

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG