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

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

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