Variable avec plusieurs modules

Résolu
PPN83 Messages postés 24 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 15 septembre 2010 - 31 janv. 2007 à 21:23
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

11 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 févr. 2007 à 02:45
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 janv. 2007 à 21:26
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 #
0
DD05 Messages postés 53 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 11 juin 2010 1
31 janv. 2007 à 22:33
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 janv. 2007 à 22:47
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DD05 Messages postés 53 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 11 juin 2010 1
31 janv. 2007 à 23:14
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 ?
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
31 janv. 2007 à 23:45
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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 févr. 2007 à 09:18
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 #
0
PPN83 Messages postés 24 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 15 septembre 2010
2 févr. 2007 à 20:56
Bonjour à tous
ok j'ai remplacé dim par public mais j'ai le même problème !!!
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 févr. 2007 à 21:03
Met-nous ton code que l'on comprenne mieux

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