Variable avec plusieurs modules [Résolu]

Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
- - Dernière réponse : PPN83
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
- 4 févr. 2007 à 17:24
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
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MPi
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
53
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
11 juin 2010
1
0
Merci
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
Commenter la réponse de DD05
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
53
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
11 juin 2010
1
0
Merci
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 ?
Commenter la réponse de DD05
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
0
Merci
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.
Commenter la réponse de us_30
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
0
Merci
Bonjour à tous
ok j'ai remplacé dim par public mais j'ai le même problème !!!
Commenter la réponse de PPN83
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
Met-nous ton code que l'on comprenne mieux

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
0
Merci
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
Commenter la réponse de PPN83
Messages postés
24
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
15 septembre 2010
0
Merci
Merci à tous de votre participation
bien vu MPi
Commenter la réponse de PPN83