Valeur non accessible car "privée" que se passe t'il ? [Résolu]

Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
- - Dernière réponse : ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
- 15 nov. 2011 à 13:29
Bonjour,
Sur un log comportant 2 forms que j'appelle form1 et form2, j'ai un calcul simplissime a faire

Form1 contient trois textbox A et B qui contiendront des nombres calculés compris entre -5.00 et +5.00 a deux decimales pres et TextboxC qui contient une valeur calculee et dont la valeur se situe dans les memes fourchettes que textbox A et B

Comment se fait ce calcul
Pour la textboxA : je vais chercher une valeur calculée dans Form2 dans une textboxD et je multiplie cette valeur par 0.25

Pour la textbox B : Je prends la valeur negative de textboxA et je lui ajoute la valeur de TextboxC

Tout ceci se fait retrospectivement, c'est a dire :
- J'entre les valeurs dans form1, je clique sur calcul et toutes les valeurs des textbox calculées dans le form sauf A et B s'affichent

- j'ouvre form2, form1 se cache et un calcul se fait automatiquement.
Les valeurs contenues dans Form1.A et Form1.B sont calculées

- Je clique sur un bouton qui me ramène a Form1 et cache form2, les valeurs s'affichent alors dans form1

J'ai donc fait :

Dans form2 pour respecter la retrospectivité
 
'En debut de form2
    Dim valD As Double
'Calcul de A
        valA = valD * 0.25
        Form1.A.Text = (valA).ToString("0.00")
        valB = -valA + (Form1.ValC)
        Form1.B.Text = (valB).ToString("0.00")


En debut de form1 j'ai
Dim valC As Double
    Dim valA As Double
    Dim valB As Double


J'ai bien sur mis les visible False et Visible True aux bons endroits
Tout fonctionne niveau affichage mais au niveau calcul j'ai l'erreur suivante :

Projet.Form1.ValC n'est pas accessible dans ce contexte, car il est 'Private'


Je ne comprends absolument pas ce qui se passe et quel est le sens de cette erreur
Merci de m'eclairer
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
3
Merci
Salut
Dim ValC As String 
équivalent à
 private ValC as string


donc si tu veux l'utiliser dans une autre form
 Public  ValC as string

Merci cs_ShayW 3

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

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
3
Merci
Bonjour Attila,

En effet :

' form 1
dim G
public P

sub x()
dim L
if g > p then
dim B
' ...
end if
end sub ' x
' fin form 1


' form 2
sub y()
form1.P = form1.P + 1
end sub ' y
' fin form 2

-----------------

P est public, elle peut être utilisée partout (mais pas indicée je crois p(x), pour l'utiliser hors sa form il faudra y adjoindre le nom de sa form d'origine (form1.P)

G est globale à la form

L est locale à la procédure de la form

B est local au bloc de la procédure de la form (ici IF).

Sauf par des paramètres spéciaux de code (byRef ou autres), chaque variale ne fonctionne quand sur son territoire géographique.

En cas de conflit : même nom et type de vriable en deux endroit de territoire différent, il y a une priorité, je crois que c'est la variable locale qui compte (sous réserve).

Il reste notamment la possibilité de faire des modules (origine du Basic), c'est une sorte de form de code public.
Pour ma part je n'utilise pas car l'avantage est de ne pas avoir à réécrire un code identique, mais l'inconvénient est qu'on se retrouve assez facilement avec des conflits de variables, entre son programme et le module, et qu'il faut sans cesse faire attention... Préférant réserver un form invisible au code commun.

Cordialement, Joe.

Merci ehjoe 3

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

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ehjoe
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
0
Merci
Bonjour,

Tout dépend où tu l'as déclarée, et la portée de cette variable..
Si rien n'est précisée, la variable sera private, donc accessible uniquement depuis le module où tu l'as déclaré.
Il faut donc te la déclarer en public pour y avoir accès depuis ta 2ème form

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
0
Merci
Voila ce que j'ai dans mon form1

Public Class Form1    
    Dim R As Boolean
    Dim ValH As Boolean
    Dim ValX As String
    Dim ValY As String
    Dim ValZ As String
    Dim ValA As String
    Dim ValB As String
    Dim ValC As String


Donc d'après moi, C qui est bien une valeur de Form1 est declarée en "public" non ?
Pourquoi je ne pourrais pas appeler Form1.Valc dans mon Form2 ???
Commenter la réponse de Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
0
Merci
ah ben j'apprends quelque chose la shaW, je pensais que Public Class Form1 suffisait a rendre public les declarations qui suivent

Merci EhJoe pour ce cours d'algo interessant et instructif...

Au fait je n'ai toujours pas reçu le livre que se passe t'il ?
Commenter la réponse de Attila54
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Attila est là...

Ben je n'en sais rien, mais moi le fisc m'a envoyé une lettre recommandée il y a six jours et je ne l'ai pas encore... Nous sommes à deux kilomètres de distance, soit pour l'instant du 13 mètres par heure (vitesse d'une tortue peut être)...
Avec les deux fériés la Poste a dû prendre un gros retard je pense...

Mais tu dois avoir un site de réclamation dans ce cas, si tu ne trouves pas, dis-moi je tenterais de trouver, mais attend une quinziane avant, je sais c'est long, mais pour ma lettre recommandée aussi c'est long, la pagaille...

Cordialement, Joe.
Commenter la réponse de ehjoe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.