Conservation des variables d'un tableau vba

Bretagne35

XLDnaute Nouveau
Bonjour,

Je souhaiterais conserver les variables d'un tableau, celles -ci seraient définies par un programme du premier fichier excel et ensuite réutilisées par celui du deuxième fichier. J'ai essayé en déclarant mon tableau avec Public ou static mais cela n'a pas marché.
Comment puis-je résoudre ce problème?

Merci d'avance pour vos réponses.
 

MJ13

XLDnaute Barbatruc
Re : Conservation des variables d'un tableau vba

Bonjour Bretagne, Tototiti

Et bien moi cela m'intéresse beaucoup cette histoire. Je me suis toujours posé la question. Si j'ai un tableau, est ce que je peux le garder en mémoire, à suivre...:confused:
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Conservation des variables d'un tableau vba

bonjour tous
par defaut si tu libere pas tes variables tableaux tu les conservent!!!
exemple
Dim t As Variant, t2() As Variant
pour les liberer c'est erase
Erase t, t2
pour un object c'est different exemple pour l'object Scripting.Dictionary

code
Set m = CreateObject("Scripting.Dictionary")
code
pour liberer c'est Nothing
Set m = Nothing
ne pas confondre avec des variables public
d'ou l'importance de liberer en fin de code si pas reutiliser "occupation memoire pc" donc ralentissement

regarder aussi du côte de ReDim Preserve
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Conservation des variables d'un tableau vba

Re ,Bonjour Laetitia, Banzai


par defaut si tu libere pas tes variables tableaux tu les conservent!!!

Laetitia: Ton analyse m'intéresse. Ce qui voudrait dire que si je met un tableau en "scripting Dictionary", si je lance d'autres macro, le tableau du scripting dictionary est toujours utilisable ultérieurement :confused:.

Mais alors le Public a(100), on ne peut pas le supprimer :confused:.

Ou la la, que de questions métaphysiques à développer :eek:.
 
Dernière édition:

Banzai64

XLDnaute Accro
Re : Conservation des variables d'un tableau vba

Bonsoir
Le sujet m'intéresse
Je pensais que les variables déclarées dans une macro n'étaient plus visibles (utilisables) ailleurs
Pour cela que je ne prenais pas la peine de "eraser" mes tableaux

Bonne soirée
 

laetitia90

XLDnaute Barbatruc
Re : Conservation des variables d'un tableau vba

bonjour tous je crois que je me suis mal exprimée mille excuses les amis....
la portée des variables reste au niveau de la macro ou dans le meme module
exemple avec Dictionary

Code:
Dim c As Range, m As Object
Sub es()
      Application.ScreenUpdating = False
         Set m = CreateObject("Scripting.Dictionary")
         For Each c In Range("a2", Cells(Rows.Count, "a").End(xlUp))
             m(c.Value) = m(c.Value) + 1
         Next c
      [B2].Resize(m.Count, 1) = Application.Transpose(m.keys)
      [c2].Resize(m.Count, 1) = Application.Transpose(m.Items)
'Set m = Nothing
End Sub

Sub est()
On Error Resume Next
[e2].Resize(m.Count, 1) = Application.Transpose(m.keys)
[f2].Resize(m.Count, 1) = Application.Transpose(m.Items)
End Sub

si tu appel la macro "est" on a bien garde les valeurs si nothing non

une variable public déclare dans un module est utiliser dans tous les modules

un autre exemple avec redim preserve dans un userform "agrandir ou reduire avec double click"
 

Pièces jointes

  • double click plein ecran.zip
    21 KB · Affichages: 106
Dernière édition:

Banzai64

XLDnaute Accro
Re : Conservation des variables d'un tableau vba

Bonjour
Si j'ai compris
Pour toutes les variables déclarées dans une macro , il n'est pas utile de les rendre au "néant" avant le End Sub
Les variables déclarées dans un module (en Public ou pas), selon le cas (réemploi) , pour les ré-initialiser, on passe par les "Erase" ou "Nothing", afin d'avoir une variable vide
Si j'ai mal compris n'hésitez-pas (un peu quand même) à me le dire
Bonne journée
 

laetitia90

XLDnaute Barbatruc
Re : Conservation des variables d'un tableau vba

rebonjour tous
il n'est pas utile de les rendre au "néant" avant le End
non c'est pas une obligation
si utilisation de l'instruction SET fortement conseille egalement ... d'ailleurs j'oublie souvent de le faire on est pas parfait!!!

precision je pensais egalement au SET hors appel object ou collection ....FIND par exemple
Code:
 Set c = .Find(données)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 890
Messages
2 093 349
Membres
105 696
dernier inscrit
FrancisR