Variable avec plusieurs modules [Résolu]

Signaler
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
-
PPN83
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
-
Bonjour,
Je m'explique toutes mes macros sont déclarées en Public, mais mes variables créees dans le module X ne sont pas reconnues dans le module Y. Comment faire ?
Merci d'avance

11 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
Je ne suis pas certain, mais je pense que tu mélanges les modules.

Il y a les classes - Forms ou modules de classe (module.cls)
Il y a les UserForms (module.frm)
et il y a les modules "standards" (module.bas)

C'est dans ce dernier que tu dois déclarer tes variables Public pour qu'elles soient reconnues dans tout le programme, sans devoir spécifier son origine.

MPi
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
il faut les déclarées en global et public, par défaut elles sont en private.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
53
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
11 juin 2010
1
Une variable déclarée en Public n'est reconnue que dans le module.

Une variable déclarée en Global est reconnue dans tout le programme.

Donc remplace public par global est ça marchera
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
DD05 vérifie tes classiques car c'est l'inverse

Une variable déclaré avec l'attribut Public est visible de l'ensemble du projet

Une variable déclarée sans l'attibut Public est par défaut Private, donc visible uniquement du module

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
53
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
11 juin 2010
1
Excuse je suis autodidacte et plus ou moins débutant en prog. Tu as surement raison.

Mais ce qui est sur c'est qu'une variable déclarée en Global est aussi reconnue dans tout le code.


Dans ce cas quelle est la différence entre Public et Global ?
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonsoir,

Voici un petit lien, pas super terrible, mais bon... cela à le mérite d'exister :
http://www.vbfrance.com/tutoriaux/VISUAL-BASIC-GENERAL-PORTEE-VARIABLES_2.aspx

Amicalement,
Us.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
Global est un mot clé qui n'existe plus en VB6. S'il est encore reconnu c'est pour des raison de compatibilité avec les anciens basic
mais il est automatiquement traduit en Public

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010

Bonjour à tous
ok j'ai remplacé dim par public mais j'ai le même problème !!!
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
Met-nous ton code que l'on comprenne mieux

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010

explication
à partir d'un formulaire 1er userform(Contrat) (Module X)je remplis des données dans un tableau(base). la première colonne du tableau correspond à un matricule. je recherche un matricule RecMat et je colle les données de la ligne correspondante dans une feuille (Recherche)sur la ligne A2:AB2. Chaque cellule est la source des valeurs qui s'affichent dans les différent champs d'un deuxième Userform(Visio) (Module Y). le but est que quand je modifie une valeur dans Visio je veux que la cellule modifiée le soit également dans le tableau. Mon idée était de comparer la ligne du tableau avec a2:ab2 et si différent faire un copier coller dans le tableau .
Ai-je été clair!!!

voici donc la partie tronquée de mon progrmme

MODULE X

Public RecMat As Integer 'cest le matricule rechercher
Public Recherche
Public c As Range
Public clé
Public Sub CmdRech_Click()' rechercher un matricule

Worksheets("Recherche").Select
Range("a2:ab2").Select
Selection.ClearContents
Worksheets("Base").Select


RecMat = InputBox("Entrer le N° Matricule")
Set Recherche = Worksheets("Base").Columns(1).Find(RecMat)
If Not Recherche Is Nothing Then
MsgBox Recherche.Address()'me sert à identifier le N° de la ligne pour l'instant
Recherche.Select
ActiveCell.EntireRow.Select


MsgBox Worksheets("Base").Range(Recherche.Address).Offset(0, 3) & vbCrLf & _
Worksheets("Base").Range(Recherche.Address).Offset(0, 5)
Worksheets("Recherche").Range("a2").Value = Range(Recherche.Address).Offset(0, 0)
Worksheets("Recherche").Range("b2").Value = Range(Recherche.Address).Offset(0, 1)
Worksheets("Recherche").Range("c2").Value = Range(Recherche.Address).Offset(0, 2)

Else
MsgBox "Le matricule n'existe pas", vbCritical, "Erreur de saisie"
Exit Sub
End If
VisioCAE.Show 'affichage des données dans le formulaire 2
End Sub

Module Y 'module du 2ème userform

Public Sub CmdRet_Click()' retour sur formulaire 1 (contrat)
MsgBox Recherche.Address()' a ce niveau il ne reconnaît pas Recherche
Recherche.Select
ActiveCell.EntireRow.Select


End Sub
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010

Merci à tous de votre participation
bien vu MPi